Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b042b36aea | ||
|
|
be7a886225 | ||
|
|
4ac1425f76 | ||
|
|
a721e82a4f | ||
|
|
98845e6cae | ||
|
|
19645248ab | ||
|
|
255c51c8a0 | ||
|
|
bbf3490e9c |
3
.github/workflows/checks.external-urls.yaml
vendored
3
.github/workflows/checks.external-urls.yaml
vendored
@@ -3,6 +3,9 @@ name: checks.external-urls
|
|||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 0 * * 0' # at 00:00 on every Sunday
|
- cron: '0 0 * * 0' # at 00:00 on every Sunday
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- tests/checks/external-urls/**
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
run-check:
|
run-check:
|
||||||
|
|||||||
1
.github/workflows/release.desktop.yaml
vendored
1
.github/workflows/release.desktop.yaml
vendored
@@ -20,6 +20,7 @@ jobs:
|
|||||||
fetch-depth: 0 # fetch all history
|
fetch-depth: 0 # fetch all history
|
||||||
-
|
-
|
||||||
name: Checkout to bump commit
|
name: Checkout to bump commit
|
||||||
|
shell: bash
|
||||||
run: git checkout "$(git rev-list "${{ github.event.release.tag_name }}"..master | tail -1)"
|
run: git checkout "$(git rev-list "${{ github.event.release.tag_name }}"..master | tail -1)"
|
||||||
-
|
-
|
||||||
name: Setup node
|
name: Setup node
|
||||||
|
|||||||
29
CHANGELOG.md
29
CHANGELOG.md
@@ -1,5 +1,34 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.13.0 (2024-02-11)
|
||||||
|
|
||||||
|
* win: add disabling clipboard features #251, #247 | [c6ebba8](https://github.com/undergroundwires/privacy.sexy/commit/c6ebba85fb1b362be0d81d3078f19db71e0528b2)
|
||||||
|
* win: improve search privacy scripts #117 | [541f9aa](https://github.com/undergroundwires/privacy.sexy/commit/541f9aa5ee1b5f4885063b65beaf6cd873f0d786)
|
||||||
|
* win: add disabling Windows Copilot #263, #266 | [cd42550](https://github.com/undergroundwires/privacy.sexy/commit/cd425502ae882bba9642dc2171c2b5771946b5a9)
|
||||||
|
* win: add Dropbox telemetry blocking #125, #118 | [10829d6](https://github.com/undergroundwires/privacy.sexy/commit/10829d65aa3fb0df937bb8829244e6290bb748c7)
|
||||||
|
* Improve selection type documentation | [7af8daa](https://github.com/undergroundwires/privacy.sexy/commit/7af8daa3411b24efb6385c7876a49bd372753f38)
|
||||||
|
* Expand script names to take full available width | [d277139](https://github.com/undergroundwires/privacy.sexy/commit/d277139dd50eeb4e4057b0a7d8fc4ac2d70785de)
|
||||||
|
* Limit tooltip width for improved readability | [6ab6dac](https://github.com/undergroundwires/privacy.sexy/commit/6ab6dacd1be2d7bf1863b07b121d86f2a379ac67)
|
||||||
|
* Add markdown support for script/category names | [a5ffed4](https://github.com/undergroundwires/privacy.sexy/commit/a5ffed4cd60d9d058d5374145c1176b10fad1660)
|
||||||
|
* Normalize and improve font sizes | [4da306b](https://github.com/undergroundwires/privacy.sexy/commit/4da306b9f79b0bb7a64bb197fb246258cf435b8d)
|
||||||
|
* Change 'revert' button to title case | [937f459](https://github.com/undergroundwires/privacy.sexy/commit/937f4593d1a91081ab6b1bcb8f85d03879d7cf07)
|
||||||
|
* Remove playful emojis (🍑🍆) | [aa4205f](https://github.com/undergroundwires/privacy.sexy/commit/aa4205ff7af7d05cfb5e82bf541b521d49bbd1c8)
|
||||||
|
* Improve UI code styling for all platforms | [311fcb1](https://github.com/undergroundwires/privacy.sexy/commit/311fcb18133d1343f6a9ae5bd7a25795a1d12c49)
|
||||||
|
* Render bracket references as superscript text | [b9c89b7](https://github.com/undergroundwires/privacy.sexy/commit/b9c89b701fc77d20dcc706419a8659ad156c4fc2)
|
||||||
|
* Change slogan and refactor project info naming | [a54e164](https://github.com/undergroundwires/privacy.sexy/commit/a54e16488ce32219bcf811b5da85f06584b293fb)
|
||||||
|
* Add 'Revert All Selection' feature #68 | [55fa7ea](https://github.com/undergroundwires/privacy.sexy/commit/55fa7eae71031357d6f03f0d349a09cd446270d3)
|
||||||
|
* win, mac, linux: add privacy.sexy cleanup scripts | [63366a4](https://github.com/undergroundwires/privacy.sexy/commit/63366a4ec2533a376849d692211e9972b56ab4a8)
|
||||||
|
* Extend search by including documentation content | [6142f3a](https://github.com/undergroundwires/privacy.sexy/commit/6142f3a2973d20493f784f323f3be57fa8deaeef)
|
||||||
|
* Remove 'preview' label from Linux options | [ebd8285](https://github.com/undergroundwires/privacy.sexy/commit/ebd82853ddc56f1cc2fc9be3fe0b3001b07f0186)
|
||||||
|
* Change fonts for improved readability | [d5bbc32](https://github.com/undergroundwires/privacy.sexy/commit/d5bbc321f902dc60618ffdfda0d583a4a433f7af)
|
||||||
|
* Apply global styles for visual consistency | [faa7a38](https://github.com/undergroundwires/privacy.sexy/commit/faa7a38a7d16390f27e4a3e51017b81665cf85ca)
|
||||||
|
* Add UI animations for expand/collapse actions | [fb08f03](https://github.com/undergroundwires/privacy.sexy/commit/fb08f037651e1a7d453b9a6af724cbccecc5b903)
|
||||||
|
* win: relocate service disabling and improve docs | [894687c](https://github.com/undergroundwires/privacy.sexy/commit/894687c0e0375a24f40bcd720ea69c9b2aa62a58)
|
||||||
|
* win: add host blocking category #26 | [17152c8](https://github.com/undergroundwires/privacy.sexy/commit/17152c84dc639e75560998a6feddfd46e0f713ce)
|
||||||
|
* Update meta title and description | [c7fa4b6](https://github.com/undergroundwires/privacy.sexy/commit/c7fa4b6d020ac6fd3bf72bb4e57022dffb1ba921)
|
||||||
|
|
||||||
|
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.12.10...0.13.0)
|
||||||
|
|
||||||
## 0.12.10 (2024-01-17)
|
## 0.12.10 (2024-01-17)
|
||||||
|
|
||||||
* Fix CSP for Vue, Ace, Vite, Safari compatibility | [940febc](https://github.com/undergroundwires/privacy.sexy/commit/940febc3e80cfd0c01b5cc8282ebaab6b024d1b5)
|
* Fix CSP for Vue, Ace, Vite, Safari compatibility | [940febc](https://github.com/undergroundwires/privacy.sexy/commit/940febc3e80cfd0c01b5cc8282ebaab6b024d1b5)
|
||||||
|
|||||||
@@ -122,7 +122,7 @@
|
|||||||
## Get started
|
## Get started
|
||||||
|
|
||||||
- 🌍️ **Online**: [https://privacy.sexy](https://privacy.sexy).
|
- 🌍️ **Online**: [https://privacy.sexy](https://privacy.sexy).
|
||||||
- 🖥️ **Offline**: Download directly for: [Windows](https://github.com/undergroundwires/privacy.sexy/releases/download/0.12.10/privacy.sexy-Setup-0.12.10.exe), [macOS](https://github.com/undergroundwires/privacy.sexy/releases/download/0.12.10/privacy.sexy-0.12.10.dmg), [Linux](https://github.com/undergroundwires/privacy.sexy/releases/download/0.12.10/privacy.sexy-0.12.10.AppImage). For more options, see [here](#additional-install-options).
|
- 🖥️ **Offline**: Download directly for: [Windows](https://github.com/undergroundwires/privacy.sexy/releases/download/0.13.0/privacy.sexy-Setup-0.13.0.exe), [macOS](https://github.com/undergroundwires/privacy.sexy/releases/download/0.13.0/privacy.sexy-0.13.0.dmg), [Linux](https://github.com/undergroundwires/privacy.sexy/releases/download/0.13.0/privacy.sexy-0.13.0.AppImage). For more options, see [here](#additional-install-options).
|
||||||
|
|
||||||
For a detailed comparison of features between the desktop and web versions of privacy.sexy, see [Desktop vs. Web Features](./docs/desktop-vs-web-features.md).
|
For a detailed comparison of features between the desktop and web versions of privacy.sexy, see [Desktop vs. Web Features](./docs/desktop-vs-web-features.md).
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { resolve } from 'node:path';
|
import { resolve } from 'node:path';
|
||||||
import { mergeConfig, UserConfig } from 'vite';
|
import { mergeConfig, type UserConfig } from 'vite';
|
||||||
import { defineConfig, externalizeDepsPlugin } from 'electron-vite';
|
import { defineConfig, externalizeDepsPlugin } from 'electron-vite';
|
||||||
import { getAliases, getClientEnvironmentVariables } from './vite-config-helper';
|
import { getAliases, getClientEnvironmentVariables } from './vite-config-helper';
|
||||||
import { createVueConfig } from './vite.config';
|
import { createVueConfig } from './vite.config';
|
||||||
|
|||||||
4199
package-lock.json
generated
4199
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
14
package.json
14
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "privacy.sexy",
|
"name": "privacy.sexy",
|
||||||
"version": "0.12.10",
|
"version": "0.13.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"slogan": "Privacy is sexy",
|
"slogan": "Privacy is sexy",
|
||||||
"description": "Enforce privacy & security best-practices on Windows, macOS and Linux, because privacy is sexy.",
|
"description": "Enforce privacy & security best-practices on Windows, macOS and Linux, because privacy is sexy.",
|
||||||
@@ -45,14 +45,14 @@
|
|||||||
"vue": "^3.3.7"
|
"vue": "^3.3.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@modyfi/vite-plugin-yaml": "^1.0.4",
|
"@modyfi/vite-plugin-yaml": "^1.1.0",
|
||||||
"@rushstack/eslint-patch": "^1.6.1",
|
"@rushstack/eslint-patch": "^1.6.1",
|
||||||
"@types/ace": "^0.0.49",
|
"@types/ace": "^0.0.49",
|
||||||
"@types/file-saver": "^2.0.5",
|
"@types/file-saver": "^2.0.5",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.17.0",
|
"@typescript-eslint/eslint-plugin": "^6.17.0",
|
||||||
"@typescript-eslint/parser": "^6.17.0",
|
"@typescript-eslint/parser": "^6.17.0",
|
||||||
"@vitejs/plugin-legacy": "^4.1.1",
|
"@vitejs/plugin-legacy": "^5.3.2",
|
||||||
"@vitejs/plugin-vue": "^4.4.0",
|
"@vitejs/plugin-vue": "^5.0.4",
|
||||||
"@vue/eslint-config-airbnb-with-typescript": "^8.0.0",
|
"@vue/eslint-config-airbnb-with-typescript": "^8.0.0",
|
||||||
"@vue/eslint-config-typescript": "^12.0.0",
|
"@vue/eslint-config-typescript": "^12.0.0",
|
||||||
"@vue/test-utils": "^2.4.1",
|
"@vue/test-utils": "^2.4.1",
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
"electron-builder": "^24.6.4",
|
"electron-builder": "^24.6.4",
|
||||||
"electron-devtools-installer": "^3.2.0",
|
"electron-devtools-installer": "^3.2.0",
|
||||||
"electron-icon-builder": "^2.0.1",
|
"electron-icon-builder": "^2.0.1",
|
||||||
"electron-vite": "^1.0.28",
|
"electron-vite": "^2.1.0",
|
||||||
"eslint": "^8.56.0",
|
"eslint": "^8.56.0",
|
||||||
"eslint-plugin-cypress": "^2.15.1",
|
"eslint-plugin-cypress": "^2.15.1",
|
||||||
"eslint-plugin-vue": "^9.19.2",
|
"eslint-plugin-vue": "^9.19.2",
|
||||||
@@ -80,8 +80,8 @@
|
|||||||
"svgexport": "^0.4.2",
|
"svgexport": "^0.4.2",
|
||||||
"terser": "^5.21.0",
|
"terser": "^5.21.0",
|
||||||
"tslib": "^2.6.2",
|
"tslib": "^2.6.2",
|
||||||
"typescript": "^5.2.2",
|
"typescript": "^5.3.3",
|
||||||
"vite": "^4.4.11",
|
"vite": "^5.1.6",
|
||||||
"vitest": "^0.34.6",
|
"vitest": "^0.34.6",
|
||||||
"vue-tsc": "^1.8.19",
|
"vue-tsc": "^1.8.19",
|
||||||
"yaml-lint": "^1.7.0"
|
"yaml-lint": "^1.7.0"
|
||||||
|
|||||||
@@ -6,10 +6,11 @@ development and installs recommended extensions from '.vscode/extensions.json'.
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
from pathlib import Path
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
from typing import Any
|
from typing import Any, Optional
|
||||||
from shutil import which
|
from shutil import which
|
||||||
|
|
||||||
VSCODE_SETTINGS_JSON_FILE: str = '.vscode/settings.json'
|
VSCODE_SETTINGS_JSON_FILE: str = '.vscode/settings.json'
|
||||||
@@ -84,7 +85,7 @@ def install_recommended_extensions() -> None:
|
|||||||
if not extensions:
|
if not extensions:
|
||||||
print_skip(f"No recommendations found in the {VSCODE_EXTENSIONS_JSON_FILE} file.")
|
print_skip(f"No recommendations found in the {VSCODE_EXTENSIONS_JSON_FILE} file.")
|
||||||
return
|
return
|
||||||
vscode_cli_path = which('code') # More reliable than using `code`, especially on Windows.
|
vscode_cli_path = locate_vscode_cli()
|
||||||
if vscode_cli_path is None:
|
if vscode_cli_path is None:
|
||||||
print_error('Visual Studio Code CLI (`code`) tool not found.')
|
print_error('Visual Studio Code CLI (`code`) tool not found.')
|
||||||
return
|
return
|
||||||
@@ -92,11 +93,23 @@ def install_recommended_extensions() -> None:
|
|||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
print_error(f"Invalid JSON in {VSCODE_EXTENSIONS_JSON_FILE}")
|
print_error(f"Invalid JSON in {VSCODE_EXTENSIONS_JSON_FILE}")
|
||||||
|
|
||||||
|
def locate_vscode_cli() -> Optional[str]:
|
||||||
|
vscode_alias = which('code') # More reliable than using `code`, especially on Windows.
|
||||||
|
if vscode_alias:
|
||||||
|
return vscode_alias
|
||||||
|
potential_vscode_cli_paths = [
|
||||||
|
'/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code' # macOS VS Code may not register 'code' command in PATH
|
||||||
|
]
|
||||||
|
for vscode_cli_candidate_path in potential_vscode_cli_paths:
|
||||||
|
if Path(vscode_cli_candidate_path).is_file():
|
||||||
|
return vscode_cli_candidate_path
|
||||||
|
return None
|
||||||
|
|
||||||
def remove_json_comments(json_like: str) -> str:
|
def remove_json_comments(json_like: str) -> str:
|
||||||
pattern: str = r'(?:"(?:\\.|[^"\\])*"|/\*[\s\S]*?\*/|//.*)|([^:]//.*$)'
|
pattern: str = r'(?:"(?:\\.|[^"\\])*"|/\*[\s\S]*?\*/|//.*)|([^:]//.*$)'
|
||||||
return re.sub(
|
return re.sub(
|
||||||
pattern,
|
pattern,
|
||||||
lambda m: '' if m.group(1) else m.group(0), json_like, flags=re.MULTILINE,
|
lambda m: '' if m.group(1) else m.agroup(0), json_like, flags=re.MULTILINE,
|
||||||
)
|
)
|
||||||
|
|
||||||
def install_vscode_extensions(vscode_cli_path: str, extensions: list[str]) -> None:
|
def install_vscode_extensions(vscode_cli_path: str, extensions: list[str]) -> None:
|
||||||
@@ -123,6 +136,12 @@ def install_vscode_extensions(vscode_cli_path: str, extensions: list[str]) -> No
|
|||||||
f"Visual Studio Code CLI tool not found: {vscode_cli_path}."
|
f"Visual Studio Code CLI tool not found: {vscode_cli_path}."
|
||||||
f"Could not install extension: {ext}",
|
f"Could not install extension: {ext}",
|
||||||
]))
|
]))
|
||||||
|
except Exception as e: # pylint: disable=broad-except
|
||||||
|
print_error(' '.join([
|
||||||
|
f"Failed to install extension '{ext}'.",
|
||||||
|
f"Attempted using Visual Studio Code CLI at: '{vscode_cli_path}'.",
|
||||||
|
f"Encountered error: {e}",
|
||||||
|
]))
|
||||||
total_extensions = len(extensions)
|
total_extensions = len(extensions)
|
||||||
print_installation_results(successful_installations, total_extensions)
|
print_installation_results(successful_installations, total_extensions)
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { IApplication } from '@/domain/IApplication';
|
import type { IApplication } from '@/domain/IApplication';
|
||||||
import { AsyncLazy } from '@/infrastructure/Threading/AsyncLazy';
|
import { AsyncLazy } from '@/infrastructure/Threading/AsyncLazy';
|
||||||
import { IApplicationFactory } from './IApplicationFactory';
|
|
||||||
import { parseApplication } from './Parser/ApplicationParser';
|
import { parseApplication } from './Parser/ApplicationParser';
|
||||||
|
import type { IApplicationFactory } from './IApplicationFactory';
|
||||||
|
|
||||||
export type ApplicationGetterType = () => IApplication;
|
export type ApplicationGetterType = () => IApplication;
|
||||||
const ApplicationGetter: ApplicationGetterType = parseApplication;
|
const ApplicationGetter: ApplicationGetterType = parseApplication;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { ScriptingLanguage } from '@/domain/ScriptingLanguage';
|
import { ScriptingLanguage } from '@/domain/ScriptingLanguage';
|
||||||
import { assertInRange } from '@/application/Common/Enum';
|
import { assertInRange } from '@/application/Common/Enum';
|
||||||
import { IScriptingLanguageFactory } from './IScriptingLanguageFactory';
|
import type { IScriptingLanguageFactory } from './IScriptingLanguageFactory';
|
||||||
|
|
||||||
type Getter<T> = () => T;
|
type Getter<T> = () => T;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { PlatformTimer } from './PlatformTimer';
|
import { PlatformTimer } from './PlatformTimer';
|
||||||
import { TimeoutType, Timer } from './Timer';
|
import type { TimeoutType, Timer } from './Timer';
|
||||||
|
|
||||||
export function batchedDebounce<T>(
|
export function batchedDebounce<T>(
|
||||||
callback: (batches: readonly T[]) => void,
|
callback: (batches: readonly T[]) => void,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Timer } from './Timer';
|
import type { Timer } from './Timer';
|
||||||
|
|
||||||
export const PlatformTimer: Timer = {
|
export const PlatformTimer: Timer = {
|
||||||
setTimeout: (callback, ms) => setTimeout(callback, ms),
|
setTimeout: (callback, ms) => setTimeout(callback, ms),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Timer, TimeoutType } from './Timer';
|
|
||||||
import { PlatformTimer } from './PlatformTimer';
|
import { PlatformTimer } from './PlatformTimer';
|
||||||
|
import type { Timer, TimeoutType } from './Timer';
|
||||||
|
|
||||||
export type CallbackType = (..._: readonly unknown[]) => void;
|
export type CallbackType = (..._: readonly unknown[]) => void;
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { IApplication } from '@/domain/IApplication';
|
import type { IApplication } from '@/domain/IApplication';
|
||||||
import { OperatingSystem } from '@/domain/OperatingSystem';
|
import { OperatingSystem } from '@/domain/OperatingSystem';
|
||||||
import { ICategoryCollection } from '@/domain/ICategoryCollection';
|
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
||||||
import { EventSource } from '@/infrastructure/Events/EventSource';
|
import { EventSource } from '@/infrastructure/Events/EventSource';
|
||||||
import { assertInRange } from '@/application/Common/Enum';
|
import { assertInRange } from '@/application/Common/Enum';
|
||||||
import { CategoryCollectionState } from './State/CategoryCollectionState';
|
import { CategoryCollectionState } from './State/CategoryCollectionState';
|
||||||
import { ICategoryCollectionState } from './State/ICategoryCollectionState';
|
import type { IApplicationContext, IApplicationContextChangedEvent } from './IApplicationContext';
|
||||||
import { IApplicationContext, IApplicationContextChangedEvent } from './IApplicationContext';
|
import type { ICategoryCollectionState } from './State/ICategoryCollectionState';
|
||||||
|
|
||||||
type StateMachine = Map<OperatingSystem, ICategoryCollectionState>;
|
type StateMachine = Map<OperatingSystem, ICategoryCollectionState>;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { IApplicationContext } from '@/application/Context/IApplicationContext';
|
import type { IApplicationContext } from '@/application/Context/IApplicationContext';
|
||||||
import { OperatingSystem } from '@/domain/OperatingSystem';
|
import { OperatingSystem } from '@/domain/OperatingSystem';
|
||||||
import { IApplication } from '@/domain/IApplication';
|
import type { IApplication } from '@/domain/IApplication';
|
||||||
import { CurrentEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironmentFactory';
|
import { CurrentEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironmentFactory';
|
||||||
import { IApplicationFactory } from '../IApplicationFactory';
|
|
||||||
import { ApplicationFactory } from '../ApplicationFactory';
|
import { ApplicationFactory } from '../ApplicationFactory';
|
||||||
import { ApplicationContext } from './ApplicationContext';
|
import { ApplicationContext } from './ApplicationContext';
|
||||||
|
import type { IApplicationFactory } from '../IApplicationFactory';
|
||||||
|
|
||||||
export async function buildContext(
|
export async function buildContext(
|
||||||
factory: IApplicationFactory = ApplicationFactory.Current,
|
factory: IApplicationFactory = ApplicationFactory.Current,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { OperatingSystem } from '@/domain/OperatingSystem';
|
import { OperatingSystem } from '@/domain/OperatingSystem';
|
||||||
import { IEventSource } from '@/infrastructure/Events/IEventSource';
|
import type { IEventSource } from '@/infrastructure/Events/IEventSource';
|
||||||
import { IApplication } from '@/domain/IApplication';
|
import type { IApplication } from '@/domain/IApplication';
|
||||||
import { ICategoryCollectionState, IReadOnlyCategoryCollectionState } from './State/ICategoryCollectionState';
|
import type { ICategoryCollectionState, IReadOnlyCategoryCollectionState } from './State/ICategoryCollectionState';
|
||||||
|
|
||||||
export interface IReadOnlyApplicationContext {
|
export interface IReadOnlyApplicationContext {
|
||||||
readonly app: IApplication;
|
readonly app: IApplication;
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { ICategoryCollection } from '@/domain/ICategoryCollection';
|
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
||||||
import { OperatingSystem } from '@/domain/OperatingSystem';
|
import { OperatingSystem } from '@/domain/OperatingSystem';
|
||||||
import { AdaptiveFilterContext } from './Filter/AdaptiveFilterContext';
|
import { AdaptiveFilterContext } from './Filter/AdaptiveFilterContext';
|
||||||
import { FilterContext } from './Filter/FilterContext';
|
|
||||||
import { ApplicationCode } from './Code/ApplicationCode';
|
import { ApplicationCode } from './Code/ApplicationCode';
|
||||||
import { UserSelection } from './Selection/UserSelection';
|
|
||||||
import { ICategoryCollectionState } from './ICategoryCollectionState';
|
|
||||||
import { IApplicationCode } from './Code/IApplicationCode';
|
|
||||||
import { UserSelectionFacade } from './Selection/UserSelectionFacade';
|
import { UserSelectionFacade } from './Selection/UserSelectionFacade';
|
||||||
|
import type { FilterContext } from './Filter/FilterContext';
|
||||||
|
import type { UserSelection } from './Selection/UserSelection';
|
||||||
|
import type { ICategoryCollectionState } from './ICategoryCollectionState';
|
||||||
|
import type { IApplicationCode } from './Code/IApplicationCode';
|
||||||
|
|
||||||
export class CategoryCollectionState implements ICategoryCollectionState {
|
export class CategoryCollectionState implements ICategoryCollectionState {
|
||||||
public readonly os: OperatingSystem;
|
public readonly os: OperatingSystem;
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import { EventSource } from '@/infrastructure/Events/EventSource';
|
import { EventSource } from '@/infrastructure/Events/EventSource';
|
||||||
import { IScriptingDefinition } from '@/domain/IScriptingDefinition';
|
import type { IScriptingDefinition } from '@/domain/IScriptingDefinition';
|
||||||
import { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
import type { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
||||||
import { ReadonlyScriptSelection } from '@/application/Context/State/Selection/Script/ScriptSelection';
|
import type { ReadonlyScriptSelection } from '@/application/Context/State/Selection/Script/ScriptSelection';
|
||||||
import { CodeChangedEvent } from './Event/CodeChangedEvent';
|
import { CodeChangedEvent } from './Event/CodeChangedEvent';
|
||||||
import { CodePosition } from './Position/CodePosition';
|
import { CodePosition } from './Position/CodePosition';
|
||||||
import { ICodeChangedEvent } from './Event/ICodeChangedEvent';
|
|
||||||
import { UserScriptGenerator } from './Generation/UserScriptGenerator';
|
import { UserScriptGenerator } from './Generation/UserScriptGenerator';
|
||||||
import { IApplicationCode } from './IApplicationCode';
|
import type { IUserScriptGenerator } from './Generation/IUserScriptGenerator';
|
||||||
import { IUserScriptGenerator } from './Generation/IUserScriptGenerator';
|
import type { ICodeChangedEvent } from './Event/ICodeChangedEvent';
|
||||||
|
import type { IApplicationCode } from './IApplicationCode';
|
||||||
|
|
||||||
export class ApplicationCode implements IApplicationCode {
|
export class ApplicationCode implements IApplicationCode {
|
||||||
public readonly changed = new EventSource<ICodeChangedEvent>();
|
public readonly changed = new EventSource<ICodeChangedEvent>();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { IScript } from '@/domain/IScript';
|
import type { IScript } from '@/domain/IScript';
|
||||||
import { ICodePosition } from '@/application/Context/State/Code/Position/ICodePosition';
|
import type { ICodePosition } from '@/application/Context/State/Code/Position/ICodePosition';
|
||||||
import { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
import type { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
||||||
import { ICodeChangedEvent } from './ICodeChangedEvent';
|
import type { ICodeChangedEvent } from './ICodeChangedEvent';
|
||||||
|
|
||||||
export class CodeChangedEvent implements ICodeChangedEvent {
|
export class CodeChangedEvent implements ICodeChangedEvent {
|
||||||
public readonly code: string;
|
public readonly code: string;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IScript } from '@/domain/IScript';
|
import type { IScript } from '@/domain/IScript';
|
||||||
import { ICodePosition } from '@/application/Context/State/Code/Position/ICodePosition';
|
import type { ICodePosition } from '@/application/Context/State/Code/Position/ICodePosition';
|
||||||
|
|
||||||
export interface ICodeChangedEvent {
|
export interface ICodeChangedEvent {
|
||||||
readonly code: string;
|
readonly code: string;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ICodeBuilder } from './ICodeBuilder';
|
import type { ICodeBuilder } from './ICodeBuilder';
|
||||||
|
|
||||||
const TotalFunctionSeparatorChars = 58;
|
const TotalFunctionSeparatorChars = 58;
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { ScriptingLanguageFactory } from '@/application/Common/ScriptingLanguage/ScriptingLanguageFactory';
|
import { ScriptingLanguageFactory } from '@/application/Common/ScriptingLanguage/ScriptingLanguageFactory';
|
||||||
import { ScriptingLanguage } from '@/domain/ScriptingLanguage';
|
import { ScriptingLanguage } from '@/domain/ScriptingLanguage';
|
||||||
import { ICodeBuilder } from './ICodeBuilder';
|
|
||||||
import { BatchBuilder } from './Languages/BatchBuilder';
|
import { BatchBuilder } from './Languages/BatchBuilder';
|
||||||
import { ShellBuilder } from './Languages/ShellBuilder';
|
import { ShellBuilder } from './Languages/ShellBuilder';
|
||||||
import { ICodeBuilderFactory } from './ICodeBuilderFactory';
|
import type { ICodeBuilder } from './ICodeBuilder';
|
||||||
|
import type { ICodeBuilderFactory } from './ICodeBuilderFactory';
|
||||||
|
|
||||||
export class CodeBuilderFactory
|
export class CodeBuilderFactory
|
||||||
extends ScriptingLanguageFactory<ICodeBuilder>
|
extends ScriptingLanguageFactory<ICodeBuilder>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IScriptingLanguageFactory } from '@/application/Common/ScriptingLanguage/IScriptingLanguageFactory';
|
import type { IScriptingLanguageFactory } from '@/application/Common/ScriptingLanguage/IScriptingLanguageFactory';
|
||||||
import { ICodeBuilder } from './ICodeBuilder';
|
import type { ICodeBuilder } from './ICodeBuilder';
|
||||||
|
|
||||||
export type ICodeBuilderFactory = IScriptingLanguageFactory<ICodeBuilder>;
|
export type ICodeBuilderFactory = IScriptingLanguageFactory<ICodeBuilder>;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ICodePosition } from '@/application/Context/State/Code/Position/ICodePosition';
|
import type { ICodePosition } from '@/application/Context/State/Code/Position/ICodePosition';
|
||||||
import { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
import type { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
||||||
|
|
||||||
export interface IUserScript {
|
export interface IUserScript {
|
||||||
readonly code: string;
|
readonly code: string;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IScriptingDefinition } from '@/domain/IScriptingDefinition';
|
import type { IScriptingDefinition } from '@/domain/IScriptingDefinition';
|
||||||
import { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
import type { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
||||||
import { IUserScript } from './IUserScript';
|
import type { IUserScript } from './IUserScript';
|
||||||
|
|
||||||
export interface IUserScriptGenerator {
|
export interface IUserScriptGenerator {
|
||||||
buildCode(
|
buildCode(
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { ICodePosition } from '@/application/Context/State/Code/Position/ICodePosition';
|
import type { ICodePosition } from '@/application/Context/State/Code/Position/ICodePosition';
|
||||||
import { IScriptingDefinition } from '@/domain/IScriptingDefinition';
|
import type { IScriptingDefinition } from '@/domain/IScriptingDefinition';
|
||||||
import { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
import type { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
||||||
import { CodePosition } from '../Position/CodePosition';
|
import { CodePosition } from '../Position/CodePosition';
|
||||||
import { IUserScriptGenerator } from './IUserScriptGenerator';
|
|
||||||
import { IUserScript } from './IUserScript';
|
|
||||||
import { ICodeBuilder } from './ICodeBuilder';
|
|
||||||
import { ICodeBuilderFactory } from './ICodeBuilderFactory';
|
|
||||||
import { CodeBuilderFactory } from './CodeBuilderFactory';
|
import { CodeBuilderFactory } from './CodeBuilderFactory';
|
||||||
|
import type { IUserScriptGenerator } from './IUserScriptGenerator';
|
||||||
|
import type { IUserScript } from './IUserScript';
|
||||||
|
import type { ICodeBuilder } from './ICodeBuilder';
|
||||||
|
import type { ICodeBuilderFactory } from './ICodeBuilderFactory';
|
||||||
|
|
||||||
export class UserScriptGenerator implements IUserScriptGenerator {
|
export class UserScriptGenerator implements IUserScriptGenerator {
|
||||||
constructor(private readonly codeBuilderFactory: ICodeBuilderFactory = new CodeBuilderFactory()) {
|
constructor(private readonly codeBuilderFactory: ICodeBuilderFactory = new CodeBuilderFactory()) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IEventSource } from '@/infrastructure/Events/IEventSource';
|
import type { IEventSource } from '@/infrastructure/Events/IEventSource';
|
||||||
import { ICodeChangedEvent } from './Event/ICodeChangedEvent';
|
import type { ICodeChangedEvent } from './Event/ICodeChangedEvent';
|
||||||
|
|
||||||
export interface IApplicationCode {
|
export interface IApplicationCode {
|
||||||
readonly changed: IEventSource<ICodeChangedEvent>;
|
readonly changed: IEventSource<ICodeChangedEvent>;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ICodePosition } from './ICodePosition';
|
import type { ICodePosition } from './ICodePosition';
|
||||||
|
|
||||||
export class CodePosition implements ICodePosition {
|
export class CodePosition implements ICodePosition {
|
||||||
public get totalLines(): number {
|
public get totalLines(): number {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { EventSource } from '@/infrastructure/Events/EventSource';
|
import { EventSource } from '@/infrastructure/Events/EventSource';
|
||||||
import { ICategoryCollection } from '@/domain/ICategoryCollection';
|
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
||||||
import { FilterResult } from './Result/FilterResult';
|
|
||||||
import { FilterContext } from './FilterContext';
|
|
||||||
import { FilterChangeDetails } from './Event/FilterChangeDetails';
|
|
||||||
import { FilterChange } from './Event/FilterChange';
|
import { FilterChange } from './Event/FilterChange';
|
||||||
import { FilterStrategy } from './Strategy/FilterStrategy';
|
|
||||||
import { LinearFilterStrategy } from './Strategy/LinearFilterStrategy';
|
import { LinearFilterStrategy } from './Strategy/LinearFilterStrategy';
|
||||||
|
import type { FilterResult } from './Result/FilterResult';
|
||||||
|
import type { FilterContext } from './FilterContext';
|
||||||
|
import type { FilterChangeDetails } from './Event/FilterChangeDetails';
|
||||||
|
import type { FilterStrategy } from './Strategy/FilterStrategy';
|
||||||
|
|
||||||
export class AdaptiveFilterContext implements FilterContext {
|
export class AdaptiveFilterContext implements FilterContext {
|
||||||
public readonly filterChanged = new EventSource<FilterChangeDetails>();
|
public readonly filterChanged = new EventSource<FilterChangeDetails>();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { FilterResult } from '@/application/Context/State/Filter/Result/FilterResult';
|
import type { FilterResult } from '@/application/Context/State/Filter/Result/FilterResult';
|
||||||
import { FilterActionType } from './FilterActionType';
|
import { FilterActionType } from './FilterActionType';
|
||||||
import {
|
import type {
|
||||||
FilterChangeDetails, FilterChangeDetailsVisitor,
|
FilterChangeDetails, FilterChangeDetailsVisitor,
|
||||||
ApplyFilterAction, ClearFilterAction,
|
ApplyFilterAction, ClearFilterAction,
|
||||||
} from './FilterChangeDetails';
|
} from './FilterChangeDetails';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IEventSource } from '@/infrastructure/Events/IEventSource';
|
import type { IEventSource } from '@/infrastructure/Events/IEventSource';
|
||||||
import { FilterResult } from './Result/FilterResult';
|
import type { FilterResult } from './Result/FilterResult';
|
||||||
import { FilterChangeDetails } from './Event/FilterChangeDetails';
|
import type { FilterChangeDetails } from './Event/FilterChangeDetails';
|
||||||
|
|
||||||
export interface ReadonlyFilterContext {
|
export interface ReadonlyFilterContext {
|
||||||
readonly currentFilter: FilterResult | undefined;
|
readonly currentFilter: FilterResult | undefined;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IScript } from '@/domain/IScript';
|
import type { IScript } from '@/domain/IScript';
|
||||||
import { ICategory } from '@/domain/ICategory';
|
import type { ICategory } from '@/domain/ICategory';
|
||||||
import { FilterResult } from './FilterResult';
|
import type { FilterResult } from './FilterResult';
|
||||||
|
|
||||||
export class AppliedFilterResult implements FilterResult {
|
export class AppliedFilterResult implements FilterResult {
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IScript, ICategory } from '@/domain/ICategory';
|
import type { IScript, ICategory } from '@/domain/ICategory';
|
||||||
|
|
||||||
export interface FilterResult {
|
export interface FilterResult {
|
||||||
readonly categoryMatches: ReadonlyArray<ICategory>;
|
readonly categoryMatches: ReadonlyArray<ICategory>;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { ICategoryCollection } from '@/domain/ICategoryCollection';
|
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
||||||
import { OperatingSystem } from '@/domain/OperatingSystem';
|
import { OperatingSystem } from '@/domain/OperatingSystem';
|
||||||
import { ReadonlyFilterContext, FilterContext } from './Filter/FilterContext';
|
import type { IApplicationCode } from './Code/IApplicationCode';
|
||||||
import { ReadonlyUserSelection, UserSelection } from './Selection/UserSelection';
|
import type { ReadonlyFilterContext, FilterContext } from './Filter/FilterContext';
|
||||||
import { IApplicationCode } from './Code/IApplicationCode';
|
import type { ReadonlyUserSelection, UserSelection } from './Selection/UserSelection';
|
||||||
|
|
||||||
export interface IReadOnlyCategoryCollectionState {
|
export interface IReadOnlyCategoryCollectionState {
|
||||||
readonly code: IApplicationCode;
|
readonly code: IApplicationCode;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ICategory } from '@/domain/ICategory';
|
import type { ICategory } from '@/domain/ICategory';
|
||||||
import { CategorySelectionChangeCommand } from './CategorySelectionChange';
|
import type { CategorySelectionChangeCommand } from './CategorySelectionChange';
|
||||||
|
|
||||||
export interface ReadonlyCategorySelection {
|
export interface ReadonlyCategorySelection {
|
||||||
areAllScriptsSelected(category: ICategory): boolean;
|
areAllScriptsSelected(category: ICategory): boolean;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { ICategory } from '@/domain/ICategory';
|
import type { ICategory } from '@/domain/ICategory';
|
||||||
import { ICategoryCollection } from '@/domain/ICategoryCollection';
|
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
||||||
import { ScriptSelection } from '../Script/ScriptSelection';
|
import type { CategorySelectionChange, CategorySelectionChangeCommand } from './CategorySelectionChange';
|
||||||
import { ScriptSelectionChange } from '../Script/ScriptSelectionChange';
|
import type { CategorySelection } from './CategorySelection';
|
||||||
import { CategorySelection } from './CategorySelection';
|
import type { ScriptSelection } from '../Script/ScriptSelection';
|
||||||
import { CategorySelectionChange, CategorySelectionChangeCommand } from './CategorySelectionChange';
|
import type { ScriptSelectionChange } from '../Script/ScriptSelectionChange';
|
||||||
|
|
||||||
export class ScriptToCategorySelectionMapper implements CategorySelection {
|
export class ScriptToCategorySelectionMapper implements CategorySelection {
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import { InMemoryRepository } from '@/infrastructure/Repository/InMemoryRepository';
|
import { InMemoryRepository } from '@/infrastructure/Repository/InMemoryRepository';
|
||||||
import { IScript } from '@/domain/IScript';
|
import type { IScript } from '@/domain/IScript';
|
||||||
import { EventSource } from '@/infrastructure/Events/EventSource';
|
import { EventSource } from '@/infrastructure/Events/EventSource';
|
||||||
import { ReadonlyRepository, Repository } from '@/application/Repository/Repository';
|
import type { ReadonlyRepository, Repository } from '@/application/Repository/Repository';
|
||||||
import { ICategoryCollection } from '@/domain/ICategoryCollection';
|
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
||||||
import { batchedDebounce } from '@/application/Common/Timing/BatchedDebounce';
|
import { batchedDebounce } from '@/application/Common/Timing/BatchedDebounce';
|
||||||
import { ScriptSelection } from './ScriptSelection';
|
|
||||||
import { ScriptSelectionChange, ScriptSelectionChangeCommand } from './ScriptSelectionChange';
|
|
||||||
import { SelectedScript } from './SelectedScript';
|
|
||||||
import { UserSelectedScript } from './UserSelectedScript';
|
import { UserSelectedScript } from './UserSelectedScript';
|
||||||
|
import type { ScriptSelection } from './ScriptSelection';
|
||||||
|
import type { ScriptSelectionChange, ScriptSelectionChangeCommand } from './ScriptSelectionChange';
|
||||||
|
import type { SelectedScript } from './SelectedScript';
|
||||||
|
|
||||||
const DEBOUNCE_DELAY_IN_MS = 100;
|
const DEBOUNCE_DELAY_IN_MS = 100;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { IEventSource } from '@/infrastructure/Events/IEventSource';
|
import type { IEventSource } from '@/infrastructure/Events/IEventSource';
|
||||||
import { IScript } from '@/domain/IScript';
|
import type { IScript } from '@/domain/IScript';
|
||||||
import { SelectedScript } from './SelectedScript';
|
import type { SelectedScript } from './SelectedScript';
|
||||||
import { ScriptSelectionChangeCommand } from './ScriptSelectionChange';
|
import type { ScriptSelectionChangeCommand } from './ScriptSelectionChange';
|
||||||
|
|
||||||
export interface ReadonlyScriptSelection {
|
export interface ReadonlyScriptSelection {
|
||||||
readonly changed: IEventSource<readonly SelectedScript[]>;
|
readonly changed: IEventSource<readonly SelectedScript[]>;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IEntity } from '@/infrastructure/Entity/IEntity';
|
import type { IEntity } from '@/infrastructure/Entity/IEntity';
|
||||||
import { IScript } from '@/domain/IScript';
|
import type { IScript } from '@/domain/IScript';
|
||||||
|
|
||||||
type ScriptId = IScript['id'];
|
type ScriptId = IScript['id'];
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { BaseEntity } from '@/infrastructure/Entity/BaseEntity';
|
import { BaseEntity } from '@/infrastructure/Entity/BaseEntity';
|
||||||
import { IScript } from '@/domain/IScript';
|
import type { IScript } from '@/domain/IScript';
|
||||||
import { SelectedScript } from './SelectedScript';
|
import type { SelectedScript } from './SelectedScript';
|
||||||
|
|
||||||
type SelectedScriptId = SelectedScript['id'];
|
type SelectedScriptId = SelectedScript['id'];
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { CategorySelection, ReadonlyCategorySelection } from './Category/CategorySelection';
|
import type { CategorySelection, ReadonlyCategorySelection } from './Category/CategorySelection';
|
||||||
import { ReadonlyScriptSelection, ScriptSelection } from './Script/ScriptSelection';
|
import type { ReadonlyScriptSelection, ScriptSelection } from './Script/ScriptSelection';
|
||||||
|
|
||||||
export interface ReadonlyUserSelection {
|
export interface ReadonlyUserSelection {
|
||||||
readonly categories: ReadonlyCategorySelection;
|
readonly categories: ReadonlyCategorySelection;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { ICategoryCollection } from '@/domain/ICategoryCollection';
|
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
||||||
import { CategorySelection } from './Category/CategorySelection';
|
|
||||||
import { ScriptToCategorySelectionMapper } from './Category/ScriptToCategorySelectionMapper';
|
import { ScriptToCategorySelectionMapper } from './Category/ScriptToCategorySelectionMapper';
|
||||||
import { DebouncedScriptSelection } from './Script/DebouncedScriptSelection';
|
import { DebouncedScriptSelection } from './Script/DebouncedScriptSelection';
|
||||||
import { ScriptSelection } from './Script/ScriptSelection';
|
import type { CategorySelection } from './Category/CategorySelection';
|
||||||
import { UserSelection } from './UserSelection';
|
import type { ScriptSelection } from './Script/ScriptSelection';
|
||||||
import { SelectedScript } from './Script/SelectedScript';
|
import type { UserSelection } from './UserSelection';
|
||||||
|
import type { SelectedScript } from './Script/SelectedScript';
|
||||||
|
|
||||||
export class UserSelectionFacade implements UserSelection {
|
export class UserSelectionFacade implements UserSelection {
|
||||||
public readonly categories: CategorySelection;
|
public readonly categories: CategorySelection;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IApplication } from '@/domain/IApplication';
|
import type { IApplication } from '@/domain/IApplication';
|
||||||
|
|
||||||
export interface IApplicationFactory {
|
export interface IApplicationFactory {
|
||||||
getApp(): Promise<IApplication>;
|
getApp(): Promise<IApplication>;
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import type { CollectionData } from '@/application/collections/';
|
import type { CollectionData } from '@/application/collections/';
|
||||||
import { IApplication } from '@/domain/IApplication';
|
import type { IApplication } from '@/domain/IApplication';
|
||||||
import type { ProjectDetails } from '@/domain/Project/ProjectDetails';
|
import type { ProjectDetails } from '@/domain/Project/ProjectDetails';
|
||||||
import { ICategoryCollection } from '@/domain/ICategoryCollection';
|
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
||||||
import WindowsData from '@/application/collections/windows.yaml';
|
import WindowsData from '@/application/collections/windows.yaml';
|
||||||
import MacOsData from '@/application/collections/macos.yaml';
|
import MacOsData from '@/application/collections/macos.yaml';
|
||||||
import LinuxData from '@/application/collections/linux.yaml';
|
import LinuxData from '@/application/collections/linux.yaml';
|
||||||
import { parseProjectDetails } from '@/application/Parser/ProjectDetailsParser';
|
import { parseProjectDetails } from '@/application/Parser/ProjectDetailsParser';
|
||||||
import { Application } from '@/domain/Application';
|
import { Application } from '@/domain/Application';
|
||||||
import { IAppMetadata } from '@/infrastructure/EnvironmentVariables/IAppMetadata';
|
import type { IAppMetadata } from '@/infrastructure/EnvironmentVariables/IAppMetadata';
|
||||||
import { EnvironmentVariablesFactory } from '@/infrastructure/EnvironmentVariables/EnvironmentVariablesFactory';
|
import { EnvironmentVariablesFactory } from '@/infrastructure/EnvironmentVariables/EnvironmentVariablesFactory';
|
||||||
import { parseCategoryCollection } from './CategoryCollectionParser';
|
import { parseCategoryCollection } from './CategoryCollectionParser';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { CollectionData } from '@/application/collections/';
|
import type { CollectionData } from '@/application/collections/';
|
||||||
import { OperatingSystem } from '@/domain/OperatingSystem';
|
import { OperatingSystem } from '@/domain/OperatingSystem';
|
||||||
import { ICategoryCollection } from '@/domain/ICategoryCollection';
|
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
||||||
import { CategoryCollection } from '@/domain/CategoryCollection';
|
import { CategoryCollection } from '@/domain/CategoryCollection';
|
||||||
import type { ProjectDetails } from '@/domain/Project/ProjectDetails';
|
import type { ProjectDetails } from '@/domain/Project/ProjectDetails';
|
||||||
import { createEnumParser } from '../Common/Enum';
|
import { createEnumParser } from '../Common/Enum';
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import { Category } from '@/domain/Category';
|
|||||||
import { NodeValidator } from '@/application/Parser/NodeValidation/NodeValidator';
|
import { NodeValidator } from '@/application/Parser/NodeValidation/NodeValidator';
|
||||||
import { NodeType } from '@/application/Parser/NodeValidation/NodeType';
|
import { NodeType } from '@/application/Parser/NodeValidation/NodeType';
|
||||||
import { parseDocs } from './DocumentationParser';
|
import { parseDocs } from './DocumentationParser';
|
||||||
import { ICategoryCollectionParseContext } from './Script/ICategoryCollectionParseContext';
|
|
||||||
import { parseScript } from './Script/ScriptParser';
|
import { parseScript } from './Script/ScriptParser';
|
||||||
|
import type { ICategoryCollectionParseContext } from './Script/ICategoryCollectionParseContext';
|
||||||
|
|
||||||
let categoryIdCounter = 0;
|
let categoryIdCounter = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { CustomError } from '@/application/Common/CustomError';
|
import { CustomError } from '@/application/Common/CustomError';
|
||||||
import { NodeType } from './NodeType';
|
import { NodeType } from './NodeType';
|
||||||
import { NodeData } from './NodeData';
|
import type { NodeData } from './NodeData';
|
||||||
|
|
||||||
export class NodeDataError extends CustomError {
|
export class NodeDataError extends CustomError {
|
||||||
constructor(message: string, public readonly context: INodeDataErrorContext) {
|
constructor(message: string, public readonly context: INodeDataErrorContext) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { isString } from '@/TypeHelpers';
|
import { isString } from '@/TypeHelpers';
|
||||||
import { INodeDataErrorContext, NodeDataError } from './NodeDataError';
|
import { type INodeDataErrorContext, NodeDataError } from './NodeDataError';
|
||||||
import { NodeData } from './NodeData';
|
import type { NodeData } from './NodeData';
|
||||||
|
|
||||||
export class NodeValidator {
|
export class NodeValidator {
|
||||||
constructor(private readonly context: INodeDataErrorContext) {
|
constructor(private readonly context: INodeDataErrorContext) {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import type { ProjectDetails } from '@/domain/Project/ProjectDetails';
|
import type { ProjectDetails } from '@/domain/Project/ProjectDetails';
|
||||||
import { GitHubProjectDetails } from '@/domain/Project/GitHubProjectDetails';
|
import { GitHubProjectDetails } from '@/domain/Project/GitHubProjectDetails';
|
||||||
import { IAppMetadata } from '@/infrastructure/EnvironmentVariables/IAppMetadata';
|
import type { IAppMetadata } from '@/infrastructure/EnvironmentVariables/IAppMetadata';
|
||||||
import { Version } from '@/domain/Version';
|
import { Version } from '@/domain/Version';
|
||||||
import { EnvironmentVariablesFactory } from '@/infrastructure/EnvironmentVariables/EnvironmentVariablesFactory';
|
import { EnvironmentVariablesFactory } from '@/infrastructure/EnvironmentVariables/EnvironmentVariablesFactory';
|
||||||
import { ConstructorArguments } from '@/TypeHelpers';
|
import type { ConstructorArguments } from '@/TypeHelpers';
|
||||||
|
|
||||||
export function
|
export function
|
||||||
parseProjectDetails(
|
parseProjectDetails(
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import type { FunctionData } from '@/application/collections/';
|
import type { FunctionData } from '@/application/collections/';
|
||||||
import { IScriptingDefinition } from '@/domain/IScriptingDefinition';
|
import type { IScriptingDefinition } from '@/domain/IScriptingDefinition';
|
||||||
import { IScriptCompiler } from './Compiler/IScriptCompiler';
|
|
||||||
import { ScriptCompiler } from './Compiler/ScriptCompiler';
|
import { ScriptCompiler } from './Compiler/ScriptCompiler';
|
||||||
import { ICategoryCollectionParseContext } from './ICategoryCollectionParseContext';
|
|
||||||
import { SyntaxFactory } from './Validation/Syntax/SyntaxFactory';
|
import { SyntaxFactory } from './Validation/Syntax/SyntaxFactory';
|
||||||
import { ISyntaxFactory } from './Validation/Syntax/ISyntaxFactory';
|
import type { ILanguageSyntax } from './Validation/Syntax/ILanguageSyntax';
|
||||||
import { ILanguageSyntax } from './Validation/Syntax/ILanguageSyntax';
|
import type { IScriptCompiler } from './Compiler/IScriptCompiler';
|
||||||
|
import type { ICategoryCollectionParseContext } from './ICategoryCollectionParseContext';
|
||||||
|
import type { ISyntaxFactory } from './Validation/Syntax/ISyntaxFactory';
|
||||||
|
|
||||||
export class CategoryCollectionParseContext implements ICategoryCollectionParseContext {
|
export class CategoryCollectionParseContext implements ICategoryCollectionParseContext {
|
||||||
public readonly compiler: IScriptCompiler;
|
public readonly compiler: IScriptCompiler;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { FunctionParameterCollection } from '@/application/Parser/Script/Compiler/Function/Parameter/FunctionParameterCollection';
|
import { FunctionParameterCollection } from '@/application/Parser/Script/Compiler/Function/Parameter/FunctionParameterCollection';
|
||||||
import { IReadOnlyFunctionCallArgumentCollection } from '../../Function/Call/Argument/IFunctionCallArgumentCollection';
|
|
||||||
import { IReadOnlyFunctionParameterCollection } from '../../Function/Parameter/IFunctionParameterCollection';
|
|
||||||
import { FunctionCallArgumentCollection } from '../../Function/Call/Argument/FunctionCallArgumentCollection';
|
import { FunctionCallArgumentCollection } from '../../Function/Call/Argument/FunctionCallArgumentCollection';
|
||||||
import { IExpression } from './IExpression';
|
import { ExpressionEvaluationContext, type IExpressionEvaluationContext } from './ExpressionEvaluationContext';
|
||||||
import { ExpressionPosition } from './ExpressionPosition';
|
import { ExpressionPosition } from './ExpressionPosition';
|
||||||
import { ExpressionEvaluationContext, IExpressionEvaluationContext } from './ExpressionEvaluationContext';
|
import type { IReadOnlyFunctionCallArgumentCollection } from '../../Function/Call/Argument/IFunctionCallArgumentCollection';
|
||||||
|
import type { IReadOnlyFunctionParameterCollection } from '../../Function/Parameter/IFunctionParameterCollection';
|
||||||
|
import type { IExpression } from './IExpression';
|
||||||
|
|
||||||
export type ExpressionEvaluator = (context: IExpressionEvaluationContext) => string;
|
export type ExpressionEvaluator = (context: IExpressionEvaluationContext) => string;
|
||||||
export class Expression implements IExpression {
|
export class Expression implements IExpression {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IReadOnlyFunctionCallArgumentCollection } from '../../Function/Call/Argument/IFunctionCallArgumentCollection';
|
|
||||||
import { IPipelineCompiler } from '../Pipes/IPipelineCompiler';
|
|
||||||
import { PipelineCompiler } from '../Pipes/PipelineCompiler';
|
import { PipelineCompiler } from '../Pipes/PipelineCompiler';
|
||||||
|
import type { IReadOnlyFunctionCallArgumentCollection } from '../../Function/Call/Argument/IFunctionCallArgumentCollection';
|
||||||
|
import type { IPipelineCompiler } from '../Pipes/IPipelineCompiler';
|
||||||
|
|
||||||
export interface IExpressionEvaluationContext {
|
export interface IExpressionEvaluationContext {
|
||||||
readonly args: IReadOnlyFunctionCallArgumentCollection;
|
readonly args: IReadOnlyFunctionCallArgumentCollection;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IReadOnlyFunctionParameterCollection } from '../../Function/Parameter/IFunctionParameterCollection';
|
|
||||||
import { ExpressionPosition } from './ExpressionPosition';
|
import { ExpressionPosition } from './ExpressionPosition';
|
||||||
import { IExpressionEvaluationContext } from './ExpressionEvaluationContext';
|
import type { IReadOnlyFunctionParameterCollection } from '../../Function/Parameter/IFunctionParameterCollection';
|
||||||
|
import type { IExpressionEvaluationContext } from './ExpressionEvaluationContext';
|
||||||
|
|
||||||
export interface IExpression {
|
export interface IExpression {
|
||||||
readonly position: ExpressionPosition;
|
readonly position: ExpressionPosition;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { IExpressionEvaluationContext, ExpressionEvaluationContext } from '@/application/Parser/Script/Compiler/Expressions/Expression/ExpressionEvaluationContext';
|
import { type IExpressionEvaluationContext, ExpressionEvaluationContext } from '@/application/Parser/Script/Compiler/Expressions/Expression/ExpressionEvaluationContext';
|
||||||
import { IReadOnlyFunctionCallArgumentCollection } from '../Function/Call/Argument/IFunctionCallArgumentCollection';
|
|
||||||
import { IExpressionsCompiler } from './IExpressionsCompiler';
|
|
||||||
import { IExpression } from './Expression/IExpression';
|
|
||||||
import { IExpressionParser } from './Parser/IExpressionParser';
|
|
||||||
import { CompositeExpressionParser } from './Parser/CompositeExpressionParser';
|
import { CompositeExpressionParser } from './Parser/CompositeExpressionParser';
|
||||||
|
import type { IReadOnlyFunctionCallArgumentCollection } from '../Function/Call/Argument/IFunctionCallArgumentCollection';
|
||||||
|
import type { IExpressionsCompiler } from './IExpressionsCompiler';
|
||||||
|
import type { IExpression } from './Expression/IExpression';
|
||||||
|
import type { IExpressionParser } from './Parser/IExpressionParser';
|
||||||
|
|
||||||
export class ExpressionsCompiler implements IExpressionsCompiler {
|
export class ExpressionsCompiler implements IExpressionsCompiler {
|
||||||
public constructor(
|
public constructor(
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IReadOnlyFunctionCallArgumentCollection } from '../Function/Call/Argument/IFunctionCallArgumentCollection';
|
import type { IReadOnlyFunctionCallArgumentCollection } from '../Function/Call/Argument/IFunctionCallArgumentCollection';
|
||||||
|
|
||||||
export interface IExpressionsCompiler {
|
export interface IExpressionsCompiler {
|
||||||
compileExpressions(
|
compileExpressions(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { IExpression } from '../Expression/IExpression';
|
|
||||||
import { ParameterSubstitutionParser } from '../SyntaxParsers/ParameterSubstitutionParser';
|
import { ParameterSubstitutionParser } from '../SyntaxParsers/ParameterSubstitutionParser';
|
||||||
import { WithParser } from '../SyntaxParsers/WithParser';
|
import { WithParser } from '../SyntaxParsers/WithParser';
|
||||||
import { IExpressionParser } from './IExpressionParser';
|
import type { IExpression } from '../Expression/IExpression';
|
||||||
|
import type { IExpressionParser } from './IExpressionParser';
|
||||||
|
|
||||||
const Parsers = [
|
const Parsers = [
|
||||||
new ParameterSubstitutionParser(),
|
new ParameterSubstitutionParser(),
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IExpression } from '../Expression/IExpression';
|
import type { IExpression } from '../Expression/IExpression';
|
||||||
|
|
||||||
export interface IExpressionParser {
|
export interface IExpressionParser {
|
||||||
findExpressions(code: string): IExpression[];
|
findExpressions(code: string): IExpression[];
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { IExpressionParser } from '../IExpressionParser';
|
import { Expression, type ExpressionEvaluator } from '../../Expression/Expression';
|
||||||
import { IExpression } from '../../Expression/IExpression';
|
|
||||||
import { Expression, ExpressionEvaluator } from '../../Expression/Expression';
|
|
||||||
import { IFunctionParameter } from '../../../Function/Parameter/IFunctionParameter';
|
|
||||||
import { FunctionParameterCollection } from '../../../Function/Parameter/FunctionParameterCollection';
|
import { FunctionParameterCollection } from '../../../Function/Parameter/FunctionParameterCollection';
|
||||||
import { createPositionFromRegexFullMatch } from '../../Expression/ExpressionPositionFactory';
|
import { createPositionFromRegexFullMatch } from '../../Expression/ExpressionPositionFactory';
|
||||||
|
import type { IExpressionParser } from '../IExpressionParser';
|
||||||
|
import type { IExpression } from '../../Expression/IExpression';
|
||||||
|
import type { IFunctionParameter } from '../../../Function/Parameter/IFunctionParameter';
|
||||||
|
|
||||||
export abstract class RegexParser implements IExpressionParser {
|
export abstract class RegexParser implements IExpressionParser {
|
||||||
protected abstract readonly regex: RegExp;
|
protected abstract readonly regex: RegExp;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IPipe } from '../IPipe';
|
import type { IPipe } from '../IPipe';
|
||||||
|
|
||||||
export class EscapeDoubleQuotes implements IPipe {
|
export class EscapeDoubleQuotes implements IPipe {
|
||||||
public readonly name: string = 'escapeDoubleQuotes';
|
public readonly name: string = 'escapeDoubleQuotes';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IPipe } from '../IPipe';
|
import type { IPipe } from '../IPipe';
|
||||||
|
|
||||||
export class InlinePowerShell implements IPipe {
|
export class InlinePowerShell implements IPipe {
|
||||||
public readonly name: string = 'inlinePowerShell';
|
public readonly name: string = 'inlinePowerShell';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IPipe } from './IPipe';
|
|
||||||
import { InlinePowerShell } from './PipeDefinitions/InlinePowerShell';
|
import { InlinePowerShell } from './PipeDefinitions/InlinePowerShell';
|
||||||
import { EscapeDoubleQuotes } from './PipeDefinitions/EscapeDoubleQuotes';
|
import { EscapeDoubleQuotes } from './PipeDefinitions/EscapeDoubleQuotes';
|
||||||
|
import type { IPipe } from './IPipe';
|
||||||
|
|
||||||
const RegisteredPipes = [
|
const RegisteredPipes = [
|
||||||
new EscapeDoubleQuotes(),
|
new EscapeDoubleQuotes(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IPipeFactory, PipeFactory } from './PipeFactory';
|
import { type IPipeFactory, PipeFactory } from './PipeFactory';
|
||||||
import { IPipelineCompiler } from './IPipelineCompiler';
|
import type { IPipelineCompiler } from './IPipelineCompiler';
|
||||||
|
|
||||||
export class PipelineCompiler implements IPipelineCompiler {
|
export class PipelineCompiler implements IPipelineCompiler {
|
||||||
constructor(private readonly factory: IPipeFactory = new PipeFactory()) { }
|
constructor(private readonly factory: IPipeFactory = new PipeFactory()) { }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { FunctionParameter } from '@/application/Parser/Script/Compiler/Function/Parameter/FunctionParameter';
|
import { FunctionParameter } from '@/application/Parser/Script/Compiler/Function/Parameter/FunctionParameter';
|
||||||
import { RegexParser, IPrimitiveExpression } from '../Parser/Regex/RegexParser';
|
import { RegexParser, type IPrimitiveExpression } from '../Parser/Regex/RegexParser';
|
||||||
import { ExpressionRegexBuilder } from '../Parser/Regex/ExpressionRegexBuilder';
|
import { ExpressionRegexBuilder } from '../Parser/Regex/ExpressionRegexBuilder';
|
||||||
|
|
||||||
export class ParameterSubstitutionParser extends RegexParser {
|
export class ParameterSubstitutionParser extends RegexParser {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
// eslint-disable-next-line max-classes-per-file
|
// eslint-disable-next-line max-classes-per-file
|
||||||
import { IExpressionParser } from '@/application/Parser/Script/Compiler/Expressions/Parser/IExpressionParser';
|
import type { IExpressionParser } from '@/application/Parser/Script/Compiler/Expressions/Parser/IExpressionParser';
|
||||||
import { FunctionParameterCollection } from '@/application/Parser/Script/Compiler/Function/Parameter/FunctionParameterCollection';
|
import { FunctionParameterCollection } from '@/application/Parser/Script/Compiler/Function/Parameter/FunctionParameterCollection';
|
||||||
import { FunctionParameter } from '@/application/Parser/Script/Compiler/Function/Parameter/FunctionParameter';
|
import { FunctionParameter } from '@/application/Parser/Script/Compiler/Function/Parameter/FunctionParameter';
|
||||||
import { IExpression } from '../Expression/IExpression';
|
|
||||||
import { ExpressionPosition } from '../Expression/ExpressionPosition';
|
import { ExpressionPosition } from '../Expression/ExpressionPosition';
|
||||||
import { ExpressionRegexBuilder } from '../Parser/Regex/ExpressionRegexBuilder';
|
import { ExpressionRegexBuilder } from '../Parser/Regex/ExpressionRegexBuilder';
|
||||||
import { createPositionFromRegexFullMatch } from '../Expression/ExpressionPositionFactory';
|
import { createPositionFromRegexFullMatch } from '../Expression/ExpressionPositionFactory';
|
||||||
|
import type { IExpression } from '../Expression/IExpression';
|
||||||
|
|
||||||
export class WithParser implements IExpressionParser {
|
export class WithParser implements IExpressionParser {
|
||||||
public findExpressions(code: string): IExpression[] {
|
public findExpressions(code: string): IExpression[] {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ensureValidParameterName } from '../../Shared/ParameterNameValidator';
|
import { ensureValidParameterName } from '../../Shared/ParameterNameValidator';
|
||||||
import { IFunctionCallArgument } from './IFunctionCallArgument';
|
import type { IFunctionCallArgument } from './IFunctionCallArgument';
|
||||||
|
|
||||||
export class FunctionCallArgument implements IFunctionCallArgument {
|
export class FunctionCallArgument implements IFunctionCallArgument {
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IFunctionCallArgument } from './IFunctionCallArgument';
|
import type { IFunctionCallArgument } from './IFunctionCallArgument';
|
||||||
import { IFunctionCallArgumentCollection } from './IFunctionCallArgumentCollection';
|
import type { IFunctionCallArgumentCollection } from './IFunctionCallArgumentCollection';
|
||||||
|
|
||||||
export class FunctionCallArgumentCollection implements IFunctionCallArgumentCollection {
|
export class FunctionCallArgumentCollection implements IFunctionCallArgumentCollection {
|
||||||
private readonly arguments = new Map<string, IFunctionCallArgument>();
|
private readonly arguments = new Map<string, IFunctionCallArgument>();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IFunctionCallArgument } from './IFunctionCallArgument';
|
import type { IFunctionCallArgument } from './IFunctionCallArgument';
|
||||||
|
|
||||||
export interface IReadOnlyFunctionCallArgumentCollection {
|
export interface IReadOnlyFunctionCallArgumentCollection {
|
||||||
getArgument(parameterName: string): IFunctionCallArgument;
|
getArgument(parameterName: string): IFunctionCallArgument;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { CompiledCode } from '../CompiledCode';
|
import type { CompiledCode } from '../CompiledCode';
|
||||||
|
|
||||||
export interface CodeSegmentMerger {
|
export interface CodeSegmentMerger {
|
||||||
mergeCodeParts(codeSegments: readonly CompiledCode[]): CompiledCode;
|
mergeCodeParts(codeSegments: readonly CompiledCode[]): CompiledCode;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { CompiledCode } from '../CompiledCode';
|
import type { CompiledCode } from '../CompiledCode';
|
||||||
import { CodeSegmentMerger } from './CodeSegmentMerger';
|
import type { CodeSegmentMerger } from './CodeSegmentMerger';
|
||||||
|
|
||||||
export class NewlineCodeSegmentMerger implements CodeSegmentMerger {
|
export class NewlineCodeSegmentMerger implements CodeSegmentMerger {
|
||||||
public mergeCodeParts(codeSegments: readonly CompiledCode[]): CompiledCode {
|
public mergeCodeParts(codeSegments: readonly CompiledCode[]): CompiledCode {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ISharedFunctionCollection } from '@/application/Parser/Script/Compiler/Function/ISharedFunctionCollection';
|
import type { ISharedFunctionCollection } from '@/application/Parser/Script/Compiler/Function/ISharedFunctionCollection';
|
||||||
import { FunctionCall } from '../FunctionCall';
|
import type { FunctionCall } from '../FunctionCall';
|
||||||
import type { SingleCallCompiler } from './SingleCall/SingleCallCompiler';
|
import type { SingleCallCompiler } from './SingleCall/SingleCallCompiler';
|
||||||
|
|
||||||
export interface FunctionCallCompilationContext {
|
export interface FunctionCallCompilationContext {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { ISharedFunctionCollection } from '@/application/Parser/Script/Compiler/Function/ISharedFunctionCollection';
|
import type { ISharedFunctionCollection } from '@/application/Parser/Script/Compiler/Function/ISharedFunctionCollection';
|
||||||
import { FunctionCall } from '../FunctionCall';
|
import type { CompiledCode } from './CompiledCode';
|
||||||
import { CompiledCode } from './CompiledCode';
|
import type { FunctionCall } from '../FunctionCall';
|
||||||
|
|
||||||
export interface FunctionCallCompiler {
|
export interface FunctionCallCompiler {
|
||||||
compileFunctionCalls(
|
compileFunctionCalls(
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
import type { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
||||||
import { ISharedFunctionCollection } from '../../ISharedFunctionCollection';
|
|
||||||
import { FunctionCallCompiler } from './FunctionCallCompiler';
|
|
||||||
import { CompiledCode } from './CompiledCode';
|
|
||||||
import { FunctionCallCompilationContext } from './FunctionCallCompilationContext';
|
|
||||||
import { SingleCallCompiler } from './SingleCall/SingleCallCompiler';
|
|
||||||
import { AdaptiveFunctionCallCompiler } from './SingleCall/AdaptiveFunctionCallCompiler';
|
|
||||||
import { CodeSegmentMerger } from './CodeSegmentJoin/CodeSegmentMerger';
|
|
||||||
import { NewlineCodeSegmentMerger } from './CodeSegmentJoin/NewlineCodeSegmentMerger';
|
import { NewlineCodeSegmentMerger } from './CodeSegmentJoin/NewlineCodeSegmentMerger';
|
||||||
|
import { AdaptiveFunctionCallCompiler } from './SingleCall/AdaptiveFunctionCallCompiler';
|
||||||
|
import type { ISharedFunctionCollection } from '../../ISharedFunctionCollection';
|
||||||
|
import type { FunctionCallCompiler } from './FunctionCallCompiler';
|
||||||
|
import type { CompiledCode } from './CompiledCode';
|
||||||
|
import type { FunctionCallCompilationContext } from './FunctionCallCompilationContext';
|
||||||
|
import type { SingleCallCompiler } from './SingleCall/SingleCallCompiler';
|
||||||
|
import type { CodeSegmentMerger } from './CodeSegmentJoin/CodeSegmentMerger';
|
||||||
|
|
||||||
export class FunctionCallSequenceCompiler implements FunctionCallCompiler {
|
export class FunctionCallSequenceCompiler implements FunctionCallCompiler {
|
||||||
public static readonly instance: FunctionCallCompiler = new FunctionCallSequenceCompiler();
|
public static readonly instance: FunctionCallCompiler = new FunctionCallSequenceCompiler();
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { FunctionCall } from '../../FunctionCall';
|
|
||||||
import { CompiledCode } from '../CompiledCode';
|
|
||||||
import { FunctionCallCompilationContext } from '../FunctionCallCompilationContext';
|
|
||||||
import { IReadOnlyFunctionCallArgumentCollection } from '../../Argument/IFunctionCallArgumentCollection';
|
|
||||||
import { ISharedFunction } from '../../../ISharedFunction';
|
|
||||||
import { SingleCallCompiler } from './SingleCallCompiler';
|
|
||||||
import { SingleCallCompilerStrategy } from './SingleCallCompilerStrategy';
|
|
||||||
import { InlineFunctionCallCompiler } from './Strategies/InlineFunctionCallCompiler';
|
import { InlineFunctionCallCompiler } from './Strategies/InlineFunctionCallCompiler';
|
||||||
import { NestedFunctionCallCompiler } from './Strategies/NestedFunctionCallCompiler';
|
import { NestedFunctionCallCompiler } from './Strategies/NestedFunctionCallCompiler';
|
||||||
|
import type { FunctionCall } from '../../FunctionCall';
|
||||||
|
import type { CompiledCode } from '../CompiledCode';
|
||||||
|
import type { FunctionCallCompilationContext } from '../FunctionCallCompilationContext';
|
||||||
|
import type { IReadOnlyFunctionCallArgumentCollection } from '../../Argument/IFunctionCallArgumentCollection';
|
||||||
|
import type { ISharedFunction } from '../../../ISharedFunction';
|
||||||
|
import type { SingleCallCompiler } from './SingleCallCompiler';
|
||||||
|
import type { SingleCallCompilerStrategy } from './SingleCallCompilerStrategy';
|
||||||
|
|
||||||
export class AdaptiveFunctionCallCompiler implements SingleCallCompiler {
|
export class AdaptiveFunctionCallCompiler implements SingleCallCompiler {
|
||||||
public constructor(
|
public constructor(
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { FunctionCall } from '../../FunctionCall';
|
import type { FunctionCallCompilationContext } from '../FunctionCallCompilationContext';
|
||||||
import { CompiledCode } from '../CompiledCode';
|
import type { FunctionCall } from '../../FunctionCall';
|
||||||
import { FunctionCallCompilationContext } from '../FunctionCallCompilationContext';
|
import type { CompiledCode } from '../CompiledCode';
|
||||||
|
|
||||||
export interface SingleCallCompiler {
|
export interface SingleCallCompiler {
|
||||||
compileSingleCall(
|
compileSingleCall(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { ISharedFunction } from '@/application/Parser/Script/Compiler/Function/ISharedFunction';
|
import type { ISharedFunction } from '@/application/Parser/Script/Compiler/Function/ISharedFunction';
|
||||||
import { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
import type { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
||||||
import { CompiledCode } from '../CompiledCode';
|
import type { CompiledCode } from '../CompiledCode';
|
||||||
import { FunctionCallCompilationContext } from '../FunctionCallCompilationContext';
|
import type { FunctionCallCompilationContext } from '../FunctionCallCompilationContext';
|
||||||
|
|
||||||
export interface SingleCallCompilerStrategy {
|
export interface SingleCallCompilerStrategy {
|
||||||
canCompile(func: ISharedFunction): boolean;
|
canCompile(func: ISharedFunction): boolean;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
import type { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
||||||
import { FunctionCallCompilationContext } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/FunctionCallCompilationContext';
|
import type { FunctionCallCompilationContext } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/FunctionCallCompilationContext';
|
||||||
|
|
||||||
export interface ArgumentCompiler {
|
export interface ArgumentCompiler {
|
||||||
createCompiledNestedCall(
|
createCompiledNestedCall(
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { IReadOnlyFunctionCallArgumentCollection } from '@/application/Parser/Script/Compiler/Function/Call/Argument/IFunctionCallArgumentCollection';
|
import type { IReadOnlyFunctionCallArgumentCollection } from '@/application/Parser/Script/Compiler/Function/Call/Argument/IFunctionCallArgumentCollection';
|
||||||
import { FunctionCallArgument } from '@/application/Parser/Script/Compiler/Function/Call/Argument/FunctionCallArgument';
|
import { FunctionCallArgument } from '@/application/Parser/Script/Compiler/Function/Call/Argument/FunctionCallArgument';
|
||||||
import { FunctionCallArgumentCollection } from '@/application/Parser/Script/Compiler/Function/Call/Argument/FunctionCallArgumentCollection';
|
import { FunctionCallArgumentCollection } from '@/application/Parser/Script/Compiler/Function/Call/Argument/FunctionCallArgumentCollection';
|
||||||
import { ExpressionsCompiler } from '@/application/Parser/Script/Compiler/Expressions/ExpressionsCompiler';
|
import { ExpressionsCompiler } from '@/application/Parser/Script/Compiler/Expressions/ExpressionsCompiler';
|
||||||
import { IExpressionsCompiler } from '@/application/Parser/Script/Compiler/Expressions/IExpressionsCompiler';
|
import type { IExpressionsCompiler } from '@/application/Parser/Script/Compiler/Expressions/IExpressionsCompiler';
|
||||||
import { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
import type { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
||||||
import { FunctionCallCompilationContext } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/FunctionCallCompilationContext';
|
import type { FunctionCallCompilationContext } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/FunctionCallCompilationContext';
|
||||||
import { ParsedFunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/ParsedFunctionCall';
|
import { ParsedFunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/ParsedFunctionCall';
|
||||||
import { ArgumentCompiler } from './ArgumentCompiler';
|
import type { ArgumentCompiler } from './ArgumentCompiler';
|
||||||
|
|
||||||
export class NestedFunctionArgumentCompiler implements ArgumentCompiler {
|
export class NestedFunctionArgumentCompiler implements ArgumentCompiler {
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { ExpressionsCompiler } from '@/application/Parser/Script/Compiler/Expressions/ExpressionsCompiler';
|
import { ExpressionsCompiler } from '@/application/Parser/Script/Compiler/Expressions/ExpressionsCompiler';
|
||||||
import { IExpressionsCompiler } from '@/application/Parser/Script/Compiler/Expressions/IExpressionsCompiler';
|
import type { IExpressionsCompiler } from '@/application/Parser/Script/Compiler/Expressions/IExpressionsCompiler';
|
||||||
import { FunctionBodyType, ISharedFunction } from '@/application/Parser/Script/Compiler/Function/ISharedFunction';
|
import { FunctionBodyType, type ISharedFunction } from '@/application/Parser/Script/Compiler/Function/ISharedFunction';
|
||||||
import { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
import type { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
||||||
import { CompiledCode } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/CompiledCode';
|
import type { CompiledCode } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/CompiledCode';
|
||||||
import { SingleCallCompilerStrategy } from '../SingleCallCompilerStrategy';
|
import type { SingleCallCompilerStrategy } from '../SingleCallCompilerStrategy';
|
||||||
|
|
||||||
export class InlineFunctionCallCompiler implements SingleCallCompilerStrategy {
|
export class InlineFunctionCallCompiler implements SingleCallCompilerStrategy {
|
||||||
public constructor(
|
public constructor(
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { CallFunctionBody, FunctionBodyType, ISharedFunction } from '@/application/Parser/Script/Compiler/Function/ISharedFunction';
|
import { type CallFunctionBody, FunctionBodyType, type ISharedFunction } from '@/application/Parser/Script/Compiler/Function/ISharedFunction';
|
||||||
import { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
import type { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
||||||
import { FunctionCallCompilationContext } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/FunctionCallCompilationContext';
|
import type { FunctionCallCompilationContext } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/FunctionCallCompilationContext';
|
||||||
import { CompiledCode } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/CompiledCode';
|
import type { CompiledCode } from '@/application/Parser/Script/Compiler/Function/Call/Compiler/CompiledCode';
|
||||||
import { SingleCallCompilerStrategy } from '../SingleCallCompilerStrategy';
|
|
||||||
import { ArgumentCompiler } from './Argument/ArgumentCompiler';
|
|
||||||
import { NestedFunctionArgumentCompiler } from './Argument/NestedFunctionArgumentCompiler';
|
import { NestedFunctionArgumentCompiler } from './Argument/NestedFunctionArgumentCompiler';
|
||||||
|
import type { SingleCallCompilerStrategy } from '../SingleCallCompilerStrategy';
|
||||||
|
import type { ArgumentCompiler } from './Argument/ArgumentCompiler';
|
||||||
|
|
||||||
export class NestedFunctionCallCompiler implements SingleCallCompilerStrategy {
|
export class NestedFunctionCallCompiler implements SingleCallCompilerStrategy {
|
||||||
public constructor(
|
public constructor(
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IReadOnlyFunctionCallArgumentCollection } from './Argument/IFunctionCallArgumentCollection';
|
import type { IReadOnlyFunctionCallArgumentCollection } from './Argument/IFunctionCallArgumentCollection';
|
||||||
|
|
||||||
export interface FunctionCall {
|
export interface FunctionCall {
|
||||||
readonly functionName: string;
|
readonly functionName: string;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import type { FunctionCallData, FunctionCallsData, FunctionCallParametersData } from '@/application/collections/';
|
import type { FunctionCallData, FunctionCallsData, FunctionCallParametersData } from '@/application/collections/';
|
||||||
import { isArray, isPlainObject } from '@/TypeHelpers';
|
import { isArray, isPlainObject } from '@/TypeHelpers';
|
||||||
import { FunctionCall } from './FunctionCall';
|
|
||||||
import { FunctionCallArgumentCollection } from './Argument/FunctionCallArgumentCollection';
|
import { FunctionCallArgumentCollection } from './Argument/FunctionCallArgumentCollection';
|
||||||
import { FunctionCallArgument } from './Argument/FunctionCallArgument';
|
import { FunctionCallArgument } from './Argument/FunctionCallArgument';
|
||||||
import { ParsedFunctionCall } from './ParsedFunctionCall';
|
import { ParsedFunctionCall } from './ParsedFunctionCall';
|
||||||
|
import type { FunctionCall } from './FunctionCall';
|
||||||
|
|
||||||
export function parseFunctionCalls(calls: FunctionCallsData): FunctionCall[] {
|
export function parseFunctionCalls(calls: FunctionCallsData): FunctionCall[] {
|
||||||
const sequence = getCallSequence(calls);
|
const sequence = getCallSequence(calls);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IReadOnlyFunctionCallArgumentCollection } from './Argument/IFunctionCallArgumentCollection';
|
import type { FunctionCall } from './FunctionCall';
|
||||||
import { FunctionCall } from './FunctionCall';
|
import type { IReadOnlyFunctionCallArgumentCollection } from './Argument/IFunctionCallArgumentCollection';
|
||||||
|
|
||||||
export class ParsedFunctionCall implements FunctionCall {
|
export class ParsedFunctionCall implements FunctionCall {
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IReadOnlyFunctionParameterCollection } from './Parameter/IFunctionParameterCollection';
|
import type { IReadOnlyFunctionParameterCollection } from './Parameter/IFunctionParameterCollection';
|
||||||
import { FunctionCall } from './Call/FunctionCall';
|
import type { FunctionCall } from './Call/FunctionCall';
|
||||||
|
|
||||||
export interface ISharedFunction {
|
export interface ISharedFunction {
|
||||||
readonly name: string;
|
readonly name: string;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ISharedFunction } from './ISharedFunction';
|
import type { ISharedFunction } from './ISharedFunction';
|
||||||
|
|
||||||
export interface ISharedFunctionCollection {
|
export interface ISharedFunctionCollection {
|
||||||
getFunctionByName(name: string): ISharedFunction;
|
getFunctionByName(name: string): ISharedFunction;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { FunctionData } from '@/application/collections/';
|
import type { FunctionData } from '@/application/collections/';
|
||||||
import { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
import type { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
||||||
import { ISharedFunctionCollection } from './ISharedFunctionCollection';
|
import type { ISharedFunctionCollection } from './ISharedFunctionCollection';
|
||||||
|
|
||||||
export interface ISharedFunctionsParser {
|
export interface ISharedFunctionsParser {
|
||||||
parseFunctions(
|
parseFunctions(
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ensureValidParameterName } from '../Shared/ParameterNameValidator';
|
import { ensureValidParameterName } from '../Shared/ParameterNameValidator';
|
||||||
import { IFunctionParameter } from './IFunctionParameter';
|
import type { IFunctionParameter } from './IFunctionParameter';
|
||||||
|
|
||||||
export class FunctionParameter implements IFunctionParameter {
|
export class FunctionParameter implements IFunctionParameter {
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IFunctionParameterCollection } from './IFunctionParameterCollection';
|
import type { IFunctionParameterCollection } from './IFunctionParameterCollection';
|
||||||
import { IFunctionParameter } from './IFunctionParameter';
|
import type { IFunctionParameter } from './IFunctionParameter';
|
||||||
|
|
||||||
export class FunctionParameterCollection implements IFunctionParameterCollection {
|
export class FunctionParameterCollection implements IFunctionParameterCollection {
|
||||||
private parameters = new Array<IFunctionParameter>();
|
private parameters = new Array<IFunctionParameter>();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { IFunctionParameter } from './IFunctionParameter';
|
import type { IFunctionParameter } from './IFunctionParameter';
|
||||||
|
|
||||||
export interface IReadOnlyFunctionParameterCollection {
|
export interface IReadOnlyFunctionParameterCollection {
|
||||||
readonly all: readonly IFunctionParameter[];
|
readonly all: readonly IFunctionParameter[];
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import { FunctionCall } from './Call/FunctionCall';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
FunctionBodyType, IFunctionCode, ISharedFunction, SharedFunctionBody,
|
FunctionBodyType, type IFunctionCode, type ISharedFunction, type SharedFunctionBody,
|
||||||
} from './ISharedFunction';
|
} from './ISharedFunction';
|
||||||
import { IReadOnlyFunctionParameterCollection } from './Parameter/IFunctionParameterCollection';
|
import type { FunctionCall } from './Call/FunctionCall';
|
||||||
|
import type { IReadOnlyFunctionParameterCollection } from './Parameter/IFunctionParameterCollection';
|
||||||
|
|
||||||
export function createCallerFunction(
|
export function createCallerFunction(
|
||||||
name: string,
|
name: string,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ISharedFunction } from './ISharedFunction';
|
import type { ISharedFunction } from './ISharedFunction';
|
||||||
import { ISharedFunctionCollection } from './ISharedFunctionCollection';
|
import type { ISharedFunctionCollection } from './ISharedFunctionCollection';
|
||||||
|
|
||||||
export class SharedFunctionCollection implements ISharedFunctionCollection {
|
export class SharedFunctionCollection implements ISharedFunctionCollection {
|
||||||
private readonly functionsByName = new Map<string, ISharedFunction>();
|
private readonly functionsByName = new Map<string, ISharedFunction>();
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
import type {
|
import type {
|
||||||
FunctionData, CodeInstruction, CodeFunctionData, CallFunctionData, CallInstruction,
|
FunctionData, CodeInstruction, CodeFunctionData, CallFunctionData, CallInstruction,
|
||||||
} from '@/application/collections/';
|
} from '@/application/collections/';
|
||||||
import { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
import type { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
||||||
import { CodeValidator } from '@/application/Parser/Script/Validation/CodeValidator';
|
import { CodeValidator } from '@/application/Parser/Script/Validation/CodeValidator';
|
||||||
import { NoEmptyLines } from '@/application/Parser/Script/Validation/Rules/NoEmptyLines';
|
import { NoEmptyLines } from '@/application/Parser/Script/Validation/Rules/NoEmptyLines';
|
||||||
import { NoDuplicatedLines } from '@/application/Parser/Script/Validation/Rules/NoDuplicatedLines';
|
import { NoDuplicatedLines } from '@/application/Parser/Script/Validation/Rules/NoDuplicatedLines';
|
||||||
import { ICodeValidator } from '@/application/Parser/Script/Validation/ICodeValidator';
|
import type { ICodeValidator } from '@/application/Parser/Script/Validation/ICodeValidator';
|
||||||
import { isArray, isNullOrUndefined, isPlainObject } from '@/TypeHelpers';
|
import { isArray, isNullOrUndefined, isPlainObject } from '@/TypeHelpers';
|
||||||
import { createFunctionWithInlineCode, createCallerFunction } from './SharedFunction';
|
import { createFunctionWithInlineCode, createCallerFunction } from './SharedFunction';
|
||||||
import { SharedFunctionCollection } from './SharedFunctionCollection';
|
import { SharedFunctionCollection } from './SharedFunctionCollection';
|
||||||
import { ISharedFunctionCollection } from './ISharedFunctionCollection';
|
|
||||||
import { ISharedFunctionsParser } from './ISharedFunctionsParser';
|
|
||||||
import { FunctionParameter } from './Parameter/FunctionParameter';
|
import { FunctionParameter } from './Parameter/FunctionParameter';
|
||||||
import { FunctionParameterCollection } from './Parameter/FunctionParameterCollection';
|
import { FunctionParameterCollection } from './Parameter/FunctionParameterCollection';
|
||||||
import { IReadOnlyFunctionParameterCollection } from './Parameter/IFunctionParameterCollection';
|
|
||||||
import { ISharedFunction } from './ISharedFunction';
|
|
||||||
import { parseFunctionCalls } from './Call/FunctionCallParser';
|
import { parseFunctionCalls } from './Call/FunctionCallParser';
|
||||||
|
import type { ISharedFunctionCollection } from './ISharedFunctionCollection';
|
||||||
|
import type { ISharedFunctionsParser } from './ISharedFunctionsParser';
|
||||||
|
import type { IReadOnlyFunctionParameterCollection } from './Parameter/IFunctionParameterCollection';
|
||||||
|
import type { ISharedFunction } from './ISharedFunction';
|
||||||
|
|
||||||
export class SharedFunctionsParser implements ISharedFunctionsParser {
|
export class SharedFunctionsParser implements ISharedFunctionsParser {
|
||||||
public static readonly instance: ISharedFunctionsParser = new SharedFunctionsParser();
|
public static readonly instance: ISharedFunctionsParser = new SharedFunctionsParser();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { ScriptData } from '@/application/collections/';
|
import type { ScriptData } from '@/application/collections/';
|
||||||
import { IScriptCode } from '@/domain/IScriptCode';
|
import type { IScriptCode } from '@/domain/IScriptCode';
|
||||||
|
|
||||||
export interface IScriptCompiler {
|
export interface IScriptCompiler {
|
||||||
canCompile(script: ScriptData): boolean;
|
canCompile(script: ScriptData): boolean;
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
import type { FunctionData, ScriptData, CallInstruction } from '@/application/collections/';
|
import type { FunctionData, ScriptData, CallInstruction } from '@/application/collections/';
|
||||||
import { IScriptCode } from '@/domain/IScriptCode';
|
import type { IScriptCode } from '@/domain/IScriptCode';
|
||||||
import { ScriptCode } from '@/domain/ScriptCode';
|
import { ScriptCode } from '@/domain/ScriptCode';
|
||||||
import { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
import type { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
||||||
import { CodeValidator } from '@/application/Parser/Script/Validation/CodeValidator';
|
import { CodeValidator } from '@/application/Parser/Script/Validation/CodeValidator';
|
||||||
import { NoEmptyLines } from '@/application/Parser/Script/Validation/Rules/NoEmptyLines';
|
import { NoEmptyLines } from '@/application/Parser/Script/Validation/Rules/NoEmptyLines';
|
||||||
import { ICodeValidator } from '@/application/Parser/Script/Validation/ICodeValidator';
|
import type { ICodeValidator } from '@/application/Parser/Script/Validation/ICodeValidator';
|
||||||
import { IScriptCompiler } from './IScriptCompiler';
|
|
||||||
import { ISharedFunctionCollection } from './Function/ISharedFunctionCollection';
|
|
||||||
import { FunctionCallSequenceCompiler } from './Function/Call/Compiler/FunctionCallSequenceCompiler';
|
|
||||||
import { FunctionCallCompiler } from './Function/Call/Compiler/FunctionCallCompiler';
|
|
||||||
import { ISharedFunctionsParser } from './Function/ISharedFunctionsParser';
|
|
||||||
import { SharedFunctionsParser } from './Function/SharedFunctionsParser';
|
import { SharedFunctionsParser } from './Function/SharedFunctionsParser';
|
||||||
|
import { FunctionCallSequenceCompiler } from './Function/Call/Compiler/FunctionCallSequenceCompiler';
|
||||||
import { parseFunctionCalls } from './Function/Call/FunctionCallParser';
|
import { parseFunctionCalls } from './Function/Call/FunctionCallParser';
|
||||||
import { CompiledCode } from './Function/Call/Compiler/CompiledCode';
|
import type { CompiledCode } from './Function/Call/Compiler/CompiledCode';
|
||||||
|
import type { IScriptCompiler } from './IScriptCompiler';
|
||||||
|
import type { ISharedFunctionCollection } from './Function/ISharedFunctionCollection';
|
||||||
|
import type { FunctionCallCompiler } from './Function/Call/Compiler/FunctionCallCompiler';
|
||||||
|
import type { ISharedFunctionsParser } from './Function/ISharedFunctionsParser';
|
||||||
|
|
||||||
export class ScriptCompiler implements IScriptCompiler {
|
export class ScriptCompiler implements IScriptCompiler {
|
||||||
private readonly functions: ISharedFunctionCollection;
|
private readonly functions: ISharedFunctionCollection;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IScriptCompiler } from './Compiler/IScriptCompiler';
|
import type { IScriptCompiler } from './Compiler/IScriptCompiler';
|
||||||
import { ILanguageSyntax } from './Validation/Syntax/ILanguageSyntax';
|
import type { ILanguageSyntax } from './Validation/Syntax/ILanguageSyntax';
|
||||||
|
|
||||||
export interface ICategoryCollectionParseContext {
|
export interface ICategoryCollectionParseContext {
|
||||||
readonly compiler: IScriptCompiler;
|
readonly compiler: IScriptCompiler;
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
import type { ScriptData, CodeScriptData, CallScriptData } from '@/application/collections/';
|
import type { ScriptData, CodeScriptData, CallScriptData } from '@/application/collections/';
|
||||||
import { NoEmptyLines } from '@/application/Parser/Script/Validation/Rules/NoEmptyLines';
|
import { NoEmptyLines } from '@/application/Parser/Script/Validation/Rules/NoEmptyLines';
|
||||||
import { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
import type { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
||||||
import { Script } from '@/domain/Script';
|
import { Script } from '@/domain/Script';
|
||||||
import { RecommendationLevel } from '@/domain/RecommendationLevel';
|
import { RecommendationLevel } from '@/domain/RecommendationLevel';
|
||||||
import { IScriptCode } from '@/domain/IScriptCode';
|
import type { IScriptCode } from '@/domain/IScriptCode';
|
||||||
import { ScriptCode } from '@/domain/ScriptCode';
|
import { ScriptCode } from '@/domain/ScriptCode';
|
||||||
import { ICodeValidator } from '@/application/Parser/Script/Validation/ICodeValidator';
|
import type { ICodeValidator } from '@/application/Parser/Script/Validation/ICodeValidator';
|
||||||
import { parseDocs } from '../DocumentationParser';
|
import { parseDocs } from '../DocumentationParser';
|
||||||
import { createEnumParser, IEnumParser } from '../../Common/Enum';
|
import { createEnumParser, type IEnumParser } from '../../Common/Enum';
|
||||||
import { NodeType } from '../NodeValidation/NodeType';
|
import { NodeType } from '../NodeValidation/NodeType';
|
||||||
import { NodeValidator } from '../NodeValidation/NodeValidator';
|
import { NodeValidator } from '../NodeValidation/NodeValidator';
|
||||||
import { ICategoryCollectionParseContext } from './ICategoryCollectionParseContext';
|
|
||||||
import { CodeValidator } from './Validation/CodeValidator';
|
import { CodeValidator } from './Validation/CodeValidator';
|
||||||
import { NoDuplicatedLines } from './Validation/Rules/NoDuplicatedLines';
|
import { NoDuplicatedLines } from './Validation/Rules/NoDuplicatedLines';
|
||||||
|
import type { ICategoryCollectionParseContext } from './ICategoryCollectionParseContext';
|
||||||
|
|
||||||
export function parseScript(
|
export function parseScript(
|
||||||
data: ScriptData,
|
data: ScriptData,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { ICodeValidationRule, IInvalidCodeLine } from './ICodeValidationRule';
|
import type { ICodeLine } from './ICodeLine';
|
||||||
import { ICodeValidator } from './ICodeValidator';
|
import type { ICodeValidationRule, IInvalidCodeLine } from './ICodeValidationRule';
|
||||||
import { ICodeLine } from './ICodeLine';
|
import type { ICodeValidator } from './ICodeValidator';
|
||||||
|
|
||||||
export class CodeValidator implements ICodeValidator {
|
export class CodeValidator implements ICodeValidator {
|
||||||
public static readonly instance: ICodeValidator = new CodeValidator();
|
public static readonly instance: ICodeValidator = new CodeValidator();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ICodeLine } from './ICodeLine';
|
import type { ICodeLine } from './ICodeLine';
|
||||||
|
|
||||||
export interface IInvalidCodeLine {
|
export interface IInvalidCodeLine {
|
||||||
readonly index: number;
|
readonly index: number;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ICodeValidationRule } from './ICodeValidationRule';
|
import type { ICodeValidationRule } from './ICodeValidationRule';
|
||||||
|
|
||||||
export interface ICodeValidator {
|
export interface ICodeValidator {
|
||||||
throwIfInvalid(
|
throwIfInvalid(
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
import type { ILanguageSyntax } from '@/application/Parser/Script/Validation/Syntax/ILanguageSyntax';
|
||||||
import { ICodeLine } from '../ICodeLine';
|
import type { ICodeLine } from '../ICodeLine';
|
||||||
import { ICodeValidationRule, IInvalidCodeLine } from '../ICodeValidationRule';
|
import type { ICodeValidationRule, IInvalidCodeLine } from '../ICodeValidationRule';
|
||||||
|
|
||||||
export class NoDuplicatedLines implements ICodeValidationRule {
|
export class NoDuplicatedLines implements ICodeValidationRule {
|
||||||
constructor(private readonly syntax: ILanguageSyntax) { }
|
constructor(private readonly syntax: ILanguageSyntax) { }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ICodeLine } from '../ICodeLine';
|
import type { ICodeValidationRule, IInvalidCodeLine } from '../ICodeValidationRule';
|
||||||
import { ICodeValidationRule, IInvalidCodeLine } from '../ICodeValidationRule';
|
import type { ICodeLine } from '../ICodeLine';
|
||||||
|
|
||||||
export class NoEmptyLines implements ICodeValidationRule {
|
export class NoEmptyLines implements ICodeValidationRule {
|
||||||
public analyze(lines: readonly ICodeLine[]): IInvalidCodeLine[] {
|
public analyze(lines: readonly ICodeLine[]): IInvalidCodeLine[] {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user