Compare commits

..

3 commits

Author SHA1 Message Date
fenris 944043d873 [add] exaple-data:minimal 2025-10-14 23:31:18 +02:00
fenris 60f1c5a0de [mod] api:action:events:hash mit ausgeben 2025-10-14 23:31:05 +02:00
fenris e66da38cb1 [upd] plankton 2025-10-14 23:30:34 +02:00
7 changed files with 194 additions and 144 deletions

View file

@ -3100,6 +3100,50 @@ declare namespace lib_plankton.session {
clear?: boolean; clear?: boolean;
}): Promise<void>; }): Promise<void>;
} }
declare namespace lib_plankton.base64 {
/**
* @author fenris
*/
type type_source = string;
/**
* @author fenris
*/
type type_target = string;
/**
* @author fenris
*/
export function encode(source: type_source): type_target;
/**
* @author fenris
*/
export function decode(target: type_target): type_source;
/**
* @author fenris
*/
export function implementation_code(): lib_plankton.code.type_code<type_source, type_target>;
export {};
}
declare namespace lib_plankton.base64 {
/**
* @author fenris
*/
class class_base64 implements lib_plankton.code.interface_code<string, string> {
/**
* @author fenris
*/
constructor();
/**
* @implementation
* @author fenris
*/
encode(x: string): string;
/**
* @implementation
* @author fenris
*/
decode(x: string): string;
}
}
declare namespace lib_plankton { declare namespace lib_plankton {
namespace order { namespace order {
/** /**
@ -4508,50 +4552,6 @@ declare namespace lib_plankton.map.collatemap {
export function implementation_map<type_key, type_value>(subject: type_subject<type_key, type_value>): type_map<type_key, type_value>; export function implementation_map<type_key, type_value>(subject: type_subject<type_key, type_value>): type_map<type_key, type_value>;
export {}; export {};
} }
declare namespace lib_plankton.base64 {
/**
* @author fenris
*/
type type_source = string;
/**
* @author fenris
*/
type type_target = string;
/**
* @author fenris
*/
export function encode(source: type_source): type_target;
/**
* @author fenris
*/
export function decode(target: type_target): type_source;
/**
* @author fenris
*/
export function implementation_code(): lib_plankton.code.type_code<type_source, type_target>;
export {};
}
declare namespace lib_plankton.base64 {
/**
* @author fenris
*/
class class_base64 implements lib_plankton.code.interface_code<string, string> {
/**
* @author fenris
*/
constructor();
/**
* @implementation
* @author fenris
*/
encode(x: string): string;
/**
* @implementation
* @author fenris
*/
decode(x: string): string;
}
}
declare namespace lib_plankton.auth { declare namespace lib_plankton.auth {
/** /**
*/ */

View file

@ -10537,6 +10537,105 @@ var lib_plankton;
})(session = lib_plankton.session || (lib_plankton.session = {})); })(session = lib_plankton.session || (lib_plankton.session = {}));
})(lib_plankton || (lib_plankton = {})); })(lib_plankton || (lib_plankton = {}));
/* /*
This file is part of »bacterio-plankton:base64«.
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
<info@greenscale.de>
»bacterio-plankton:base64« is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
»bacterio-plankton:base64« is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with »bacterio-plankton:base64«. If not, see <http://www.gnu.org/licenses/>.
*/
var lib_plankton;
(function (lib_plankton) {
var base64;
(function (base64) {
/**
* @author fenris
*/
function encode(source) {
return Buffer.from(source, "utf-8").toString("base64");
}
base64.encode = encode;
/**
* @author fenris
*/
function decode(target) {
return Buffer.from(target, "base64").toString("utf-8");
}
base64.decode = decode;
/**
* @author fenris
*/
function implementation_code() {
return {
"encode": encode,
"decode": decode,
};
}
base64.implementation_code = implementation_code;
})(base64 = lib_plankton.base64 || (lib_plankton.base64 = {}));
})(lib_plankton || (lib_plankton = {}));
/*
This file is part of »bacterio-plankton:base64«.
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
<info@greenscale.de>
»bacterio-plankton:base64« is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
»bacterio-plankton:base64« is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with »bacterio-plankton:base64«. If not, see <http://www.gnu.org/licenses/>.
*/
var lib_plankton;
(function (lib_plankton) {
var base64;
(function (base64) {
/**
* @author fenris
*/
class class_base64 {
/**
* @author fenris
*/
constructor() {
}
/**
* @implementation
* @author fenris
*/
encode(x) {
return base64.encode(x);
}
/**
* @implementation
* @author fenris
*/
decode(x) {
return base64.decode(x);
}
}
base64.class_base64 = class_base64;
})(base64 = lib_plankton.base64 || (lib_plankton.base64 = {}));
})(lib_plankton || (lib_plankton = {}));
/*
This file is part of »bacterio-plankton:order«. This file is part of »bacterio-plankton:order«.
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR' Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
@ -15785,105 +15884,6 @@ var lib_plankton;
})(map = lib_plankton.map || (lib_plankton.map = {})); })(map = lib_plankton.map || (lib_plankton.map = {}));
})(lib_plankton || (lib_plankton = {})); })(lib_plankton || (lib_plankton = {}));
/* /*
This file is part of »bacterio-plankton:base64«.
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
<info@greenscale.de>
»bacterio-plankton:base64« is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
»bacterio-plankton:base64« is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with »bacterio-plankton:base64«. If not, see <http://www.gnu.org/licenses/>.
*/
var lib_plankton;
(function (lib_plankton) {
var base64;
(function (base64) {
/**
* @author fenris
*/
function encode(source) {
return Buffer.from(source, "utf-8").toString("base64");
}
base64.encode = encode;
/**
* @author fenris
*/
function decode(target) {
return Buffer.from(target, "base64").toString("utf-8");
}
base64.decode = decode;
/**
* @author fenris
*/
function implementation_code() {
return {
"encode": encode,
"decode": decode,
};
}
base64.implementation_code = implementation_code;
})(base64 = lib_plankton.base64 || (lib_plankton.base64 = {}));
})(lib_plankton || (lib_plankton = {}));
/*
This file is part of »bacterio-plankton:base64«.
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
<info@greenscale.de>
»bacterio-plankton:base64« is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
»bacterio-plankton:base64« is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with »bacterio-plankton:base64«. If not, see <http://www.gnu.org/licenses/>.
*/
var lib_plankton;
(function (lib_plankton) {
var base64;
(function (base64) {
/**
* @author fenris
*/
class class_base64 {
/**
* @author fenris
*/
constructor() {
}
/**
* @implementation
* @author fenris
*/
encode(x) {
return base64.encode(x);
}
/**
* @implementation
* @author fenris
*/
decode(x) {
return base64.decode(x);
}
}
base64.class_base64 = class_base64;
})(base64 = lib_plankton.base64 || (lib_plankton.base64 = {}));
})(lib_plankton || (lib_plankton = {}));
/*
This file is part of »bacterio-plankton:auth«. This file is part of »bacterio-plankton:auth«.
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR' Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'

13
misc/data-minimal.json Normal file
View file

@ -0,0 +1,13 @@
{
"users": [
{
"id": 1,
"name": "user",
"email_address": "user@example.org",
"dav_token": null,
"password": "user"
}
],
"calendars": [
]
}

View file

@ -32,6 +32,7 @@ namespace _zeitbild.api
( (
Array< Array<
{ {
hash : _zeitbild.type_event_hash;
calendar_id : int; calendar_id : int;
calendar_name : string; calendar_name : string;
hue : float; hue : float;
@ -73,6 +74,10 @@ namespace _zeitbild.api
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"hash": {
"nullable": false,
"type": "string",
},
"calendar_id": { "calendar_id": {
"nullable": false, "nullable": false,
"type": "number", "type": "number",
@ -191,6 +196,8 @@ namespace _zeitbild.api
data data
.map( .map(
(entry) => ({ (entry) => ({
// todo
"hash": entry.hash,
"calendar_id": entry.calendar_id, "calendar_id": entry.calendar_id,
"calendar_name": entry.calendar_name, "calendar_name": entry.calendar_name,
"hue": entry.hue, "hue": entry.hue,

View file

@ -298,13 +298,14 @@ namespace _zeitbild.service.calendar
Array< Array<
{ {
id : (null | _zeitbild.type_local_resource_event_id); id : (null | _zeitbild.type_local_resource_event_id);
hash : _zeitbild.type_event_hash;
object : _zeitbild.type_event_object; object : _zeitbild.type_event_object;
} }
> >
> >
{ {
const calendar_object : _zeitbild.type_calendar_object = await _zeitbild.repository.calendar.read(calendar_id); const calendar_object : _zeitbild.type_calendar_object = await _zeitbild.repository.calendar.read(calendar_id);
return wrap_check_access_level<Array<{id : (null | _zeitbild.type_local_resource_event_id); object : _zeitbild.type_event_object;}>>( return wrap_check_access_level<Array<{id : (null | _zeitbild.type_local_resource_event_id); hash : _zeitbild.type_event_hash; object : _zeitbild.type_event_object;}>>(
calendar_object, calendar_object,
user_id, user_id,
_zeitbild.enum_access_level.view, _zeitbild.enum_access_level.view,
@ -325,6 +326,13 @@ namespace _zeitbild.service.calendar
(event_object) => Promise.resolve( (event_object) => Promise.resolve(
{ {
"id": event_id, "id": event_id,
"hash": lib_plankton.string.coin(
"{{calendar_id}}:{{event_id}}",
{
"calendar_id": calendar_id.toFixed(0),
"event_id": event_id.toFixed(0),
}
),
"object": event_object, "object": event_object,
} }
) )
@ -449,6 +457,19 @@ namespace _zeitbild.service.calendar
.map( .map(
(event) => ({ (event) => ({
"id": null, "id": null,
"hash": lib_plankton.string.coin(
"{{calendar_id}}~{{hash}}",
{
"calendar_id": calendar_id.toFixed(0),
"hash": lib_plankton.call.convey(
event,
[
(x : any) => lib_plankton.json.encode(x),
(x : string) => lib_plankton.base64.encode(x),
]
)
}
),
"object": event, "object": event,
}) })
) )
@ -531,6 +552,7 @@ namespace _zeitbild.service.calendar
const events : Array< const events : Array<
{ {
id : (null | _zeitbild.type_local_resource_event_id); id : (null | _zeitbild.type_local_resource_event_id);
hash : _zeitbild.type_event_hash;
object : _zeitbild.type_event_object; object : _zeitbild.type_event_object;
} }
> = await get_events( > = await get_events(
@ -543,6 +565,7 @@ namespace _zeitbild.service.calendar
events events
.map( .map(
(event_entry) => ({ (event_entry) => ({
"hash": event_entry.hash,
"calendar_id": calendar_id, "calendar_id": calendar_id,
"calendar_name": calendar_object.name, "calendar_name": calendar_object.name,
"hue": calendar_object.hue, "hue": calendar_object.hue,

View file

@ -140,9 +140,15 @@ namespace _zeitbild
}; };
/**
*/
export type type_event_hash = string;
/** /**
*/ */
export type type_event_extended = { export type type_event_extended = {
hash : type_event_hash;
calendar_id : type_calendar_id; calendar_id : type_calendar_id;
calendar_name : string; calendar_name : string;
hue : float; hue : float;

View file

@ -16,6 +16,7 @@ modules="${modules} session"
modules="${modules} file" modules="${modules} file"
modules="${modules} string" modules="${modules} string"
modules="${modules} json" modules="${modules} json"
modules="${modules} base64"
modules="${modules} list" modules="${modules} list"
modules="${modules} order" modules="${modules} order"
modules="${modules} ical" modules="${modules} ical"