Compare commits
1 Commits
main
...
1353a4d5f3
| Author | SHA1 | Date | |
|---|---|---|---|
| 1353a4d5f3 |
989
package-lock.json
generated
989
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
72
package.json
72
package.json
@@ -21,45 +21,45 @@
|
|||||||
"test:coverage": "vitest run --coverage --config tests/js/vitest.config.ts"
|
"test:coverage": "vitest run --coverage --config tests/js/vitest.config.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fontsource/inter": "^5.2.8",
|
"@fontsource/inter": "5.2.8",
|
||||||
"@fontsource/poppins": "^5.2.7",
|
"@fontsource/poppins": "5.2.7",
|
||||||
"@fontsource/public-sans": "^5.2.7",
|
"@fontsource/public-sans": "5.2.7",
|
||||||
"@fontsource/roboto": "^5.2.10",
|
"@fontsource/roboto": "5.2.10",
|
||||||
"@mdi/font": "^7.4.47",
|
"@mdi/font": "7.4.47",
|
||||||
"@tsconfig/node24": "^24.0.4",
|
"@tsconfig/node24": "24.0.4",
|
||||||
"@typescript-eslint/parser": "^8.59.3",
|
"@typescript-eslint/parser": "^8.55.0",
|
||||||
"@vue/compiler-sfc": "^3.5.34",
|
"@vue/compiler-sfc": "^3.5.33",
|
||||||
"dompurify": "^3.4.3",
|
"dompurify": "^3.4.1",
|
||||||
"pinia": "^3.0.4",
|
"pinia": "3.0.4",
|
||||||
"vee-validate": "^4.15.1",
|
"vee-validate": "^4.15.1",
|
||||||
"vite-plugin-vuetify": "^2.1.3",
|
"vite-plugin-vuetify": "2.1.3",
|
||||||
"vue": "^3.5.34",
|
"vue": "3.5.28",
|
||||||
"vue-router": "^5.0.7",
|
"vue-router": "5.0.7",
|
||||||
"vue3-perfect-scrollbar": "^2.0.0",
|
"vue3-perfect-scrollbar": "2.0.0",
|
||||||
"vuetify": "^4.0.7"
|
"vuetify": "4.0.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^10.0.1",
|
"@eslint/js": "^10.0.0",
|
||||||
"@types/dompurify": "^3.2.0",
|
"@types/dompurify": "^3.2.0",
|
||||||
"@types/node": "^25.8.0",
|
"@types/node": "25.8.0",
|
||||||
"@vitejs/plugin-vue": "^6.0.7",
|
"@vitejs/plugin-vue": "6.0.6",
|
||||||
"@vitest/coverage-v8": "^4.1.6",
|
"@vitest/coverage-v8": "^4.0.18",
|
||||||
"@vitest/ui": "^4.1.6",
|
"@vitest/ui": "^4.0.18",
|
||||||
"@vue/eslint-config-prettier": "^10.2.0",
|
"@vue/eslint-config-prettier": "10.2.0",
|
||||||
"@vue/test-utils": "^2.4.10",
|
"@vue/test-utils": "^2.4.8",
|
||||||
"@vue/tsconfig": "^0.9.1",
|
"@vue/tsconfig": "0.9.1",
|
||||||
"eslint": "^10.3.0",
|
"eslint": "^10.0.0",
|
||||||
"eslint-plugin-vue": "^10.9.1",
|
"eslint-plugin-vue": "10.9.1",
|
||||||
"jsdom": "^29.1.1",
|
"jsdom": "^29.0.0",
|
||||||
"prettier": "^3.8.3",
|
"prettier": "3.8.3",
|
||||||
"sass": "^1.99.0",
|
"sass": "1.99.0",
|
||||||
"sass-loader": "^16.0.8",
|
"sass-loader": "16.0.8",
|
||||||
"typescript": "^6.0.3",
|
"typescript": "6.0.3",
|
||||||
"typescript-eslint": "^8.59.3",
|
"typescript-eslint": "^8.59.0",
|
||||||
"vite": "^8.0.13",
|
"vite": "8.0.13",
|
||||||
"vite-plugin-static-copy": "^4.1.0",
|
"vite-plugin-static-copy": "^4.0.0",
|
||||||
"vitest": "^4.1.6",
|
"vitest": "^4.0.18",
|
||||||
"vue-cli-plugin-vuetify": "^2.5.8",
|
"vue-cli-plugin-vuetify": "2.5.8",
|
||||||
"vue-tsc": "^3.2.9"
|
"vue-tsc": "^3.2.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,8 +28,6 @@ use KTXF\Resource\Provider\ResourceServiceLocationInterface;
|
|||||||
*/
|
*/
|
||||||
interface ProviderServiceDiscoverInterface {
|
interface ProviderServiceDiscoverInterface {
|
||||||
|
|
||||||
public const CAPABILITY_SERVICE_DISCOVER = 'ServiceDiscover';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempts to discover service configuration using provider-specific methods.
|
* Attempts to discover service configuration using provider-specific methods.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -28,8 +28,6 @@ use KTXF\Mail\Service\ServiceMutableInterface;
|
|||||||
*/
|
*/
|
||||||
interface ProviderServiceTestInterface {
|
interface ProviderServiceTestInterface {
|
||||||
|
|
||||||
public const CAPABILITY_SERVICE_TEST = 'ServiceTest';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test a service connection
|
* Test a service connection
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -12,10 +12,8 @@ namespace KTXF\Mail\Service;
|
|||||||
use Generator;
|
use Generator;
|
||||||
use KTXF\Mail\Collection\CollectionBaseInterface;
|
use KTXF\Mail\Collection\CollectionBaseInterface;
|
||||||
use KTXF\Mail\Object\AddressInterface;
|
use KTXF\Mail\Object\AddressInterface;
|
||||||
use KTXF\Resource\BinaryResource;
|
|
||||||
use KTXF\Resource\Delta\Delta;
|
use KTXF\Resource\Delta\Delta;
|
||||||
use KTXF\Resource\Filter\IFilter;
|
use KTXF\Resource\Filter\IFilter;
|
||||||
use KTXF\Resource\Identifier\EntityIdentifierInterface;
|
|
||||||
use KTXF\Resource\Provider\ResourceServiceBaseInterface;
|
use KTXF\Resource\Provider\ResourceServiceBaseInterface;
|
||||||
use KTXF\Resource\Range\IRange;
|
use KTXF\Resource\Range\IRange;
|
||||||
use KTXF\Resource\Range\RangeType;
|
use KTXF\Resource\Range\RangeType;
|
||||||
@@ -168,9 +166,9 @@ interface ServiceBaseInterface extends ResourceServiceBaseInterface {
|
|||||||
* @param IRange|null $range Optional pagination
|
* @param IRange|null $range Optional pagination
|
||||||
* @param array|null $properties Optional message properties to fetch
|
* @param array|null $properties Optional message properties to fetch
|
||||||
*
|
*
|
||||||
* @return array<string,EntityBaseInterface> Messages indexed by Urn
|
* @return array<string|int,EntityBaseInterface> Messages indexed by ID
|
||||||
*/
|
*/
|
||||||
public function entityListBulk(string|int $collection, ?IFilter $filter = null, ?ISort $sort = null, ?IRange $range = null, ?array $properties = null): array;
|
public function entityList(string|int $collection, ?IFilter $filter = null, ?ISort $sort = null, ?IRange $range = null, ?array $properties = null): array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists messages in a collection
|
* Lists messages in a collection
|
||||||
@@ -246,33 +244,11 @@ interface ServiceBaseInterface extends ResourceServiceBaseInterface {
|
|||||||
*
|
*
|
||||||
* @since 2025.05.01
|
* @since 2025.05.01
|
||||||
*
|
*
|
||||||
* @param EntityIdentifierInterface ...$identifiers Message identifiers to fetch
|
* @param string|int $collection Collection ID
|
||||||
|
* @param string|int ...$identifiers Message IDs to fetch
|
||||||
*
|
*
|
||||||
* @return array<string,EntityBaseInterface> Messages indexed by Urn
|
* @return array<string|int,EntityBaseInterface> Messages indexed by ID
|
||||||
*/
|
*/
|
||||||
public function entityFetchBulk(EntityIdentifierInterface ...$identifiers): array;
|
public function entityFetch(string|int $collection, string|int ...$identifiers): array;
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetches one or more entities
|
|
||||||
*
|
|
||||||
* @since 2025.05.01
|
|
||||||
*
|
|
||||||
* @param EntityIdentifierInterface ...$identifiers Message identifiers to fetch
|
|
||||||
*
|
|
||||||
* @return Generator<string,EntityBaseInterface> Yields messages one by one
|
|
||||||
*/
|
|
||||||
public function entityFetchStream(EntityIdentifierInterface ...$identifiers): Generator;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Downloads a message or part of a message
|
|
||||||
*
|
|
||||||
* @since 2025.05.01
|
|
||||||
*
|
|
||||||
* @param EntityIdentifierInterface $target Message identifier
|
|
||||||
* @param array|null $part Optional part to download
|
|
||||||
*
|
|
||||||
* @return BinaryResource
|
|
||||||
*/
|
|
||||||
public function entityDownload(EntityIdentifierInterface $target, array|null $part): BinaryResource;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SPDX-FileCopyrightText: Sebastian Krupinski <krupinski01@gmail.com>
|
|
||||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace KTXF\Resource;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Carries file-like binary content metadata and a byte stream.
|
|
||||||
*/
|
|
||||||
final class BinaryResource
|
|
||||||
{
|
|
||||||
public function __construct(
|
|
||||||
private readonly string $filename,
|
|
||||||
private readonly string $mimeType,
|
|
||||||
private readonly \Generator $stream,
|
|
||||||
) {}
|
|
||||||
|
|
||||||
public function filename(): string
|
|
||||||
{
|
|
||||||
return $this->filename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function mimeType(): string
|
|
||||||
{
|
|
||||||
return $this->mimeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function stream(): \Generator
|
|
||||||
{
|
|
||||||
return $this->stream;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -71,13 +71,6 @@ abstract class NodeBaseAbstract implements NodeBaseInterface {
|
|||||||
return $this->data[static::PROPERTY_TYPE];
|
return $this->data[static::PROPERTY_TYPE];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public function urn(): string {
|
|
||||||
return (string) $this->nodeIdentifier();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -35,13 +35,6 @@ interface NodeBaseInterface extends JsonSerializable {
|
|||||||
* @since 2025.05.01
|
* @since 2025.05.01
|
||||||
*/
|
*/
|
||||||
public function type(): string;
|
public function type(): string;
|
||||||
|
|
||||||
/**
|
|
||||||
* Node URN
|
|
||||||
*
|
|
||||||
* @since 2025.05.01
|
|
||||||
*/
|
|
||||||
public function urn(): string;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provider identifier
|
* Provider identifier
|
||||||
|
|||||||
@@ -14,6 +14,11 @@ interface ResourceProviderBaseInterface extends ProviderInterface, JsonSerializa
|
|||||||
public const CAPABILITY_SERVICE_LIST = 'ServiceList';
|
public const CAPABILITY_SERVICE_LIST = 'ServiceList';
|
||||||
public const CAPABILITY_SERVICE_FETCH = 'ServiceFetch';
|
public const CAPABILITY_SERVICE_FETCH = 'ServiceFetch';
|
||||||
public const CAPABILITY_SERVICE_EXTANT = 'ServiceExtant';
|
public const CAPABILITY_SERVICE_EXTANT = 'ServiceExtant';
|
||||||
|
public const CAPABILITY_SERVICE_CREATE = 'ServiceCreate';
|
||||||
|
public const CAPABILITY_SERVICE_MODIFY = 'ServiceModify';
|
||||||
|
public const CAPABILITY_SERVICE_DESTROY = 'ServiceDestroy';
|
||||||
|
public const CAPABILITY_SERVICE_DISCOVER = 'ServiceDiscover';
|
||||||
|
public const CAPABILITY_SERVICE_TEST = 'ServiceTest';
|
||||||
|
|
||||||
public const JSON_TYPE = 'resource.provider';
|
public const JSON_TYPE = 'resource.provider';
|
||||||
public const JSON_PROPERTY_TYPE = '@type';
|
public const JSON_PROPERTY_TYPE = '@type';
|
||||||
|
|||||||
@@ -12,10 +12,6 @@ namespace KTXF\Resource\Provider;
|
|||||||
use KTXF\Json\JsonDeserializable;
|
use KTXF\Json\JsonDeserializable;
|
||||||
|
|
||||||
interface ResourceProviderServiceMutateInterface extends JsonDeserializable {
|
interface ResourceProviderServiceMutateInterface extends JsonDeserializable {
|
||||||
|
|
||||||
public const CAPABILITY_SERVICE_CREATE = 'ServiceCreate';
|
|
||||||
public const CAPABILITY_SERVICE_MODIFY = 'ServiceModify';
|
|
||||||
public const CAPABILITY_SERVICE_DESTROY = 'ServiceDestroy';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* construct and new blank service instance
|
* construct and new blank service instance
|
||||||
|
|||||||
Reference in New Issue
Block a user