@struktoai/mirage-core
Version:
A Unified Virtual Filesystem For AI Agents
49 lines • 2.07 kB
JavaScript
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
import { TimeRange } from "../core/time_range.js";
import { localDate } from "../core/gcal/day.js";
import { GoogleApiAccessor } from "./google_api.js";
export class GCalAccessor extends GoogleApiAccessor {
timeRange;
config;
/**
* Whether the mount walks under a `walkLimit`, asked when a listing runs,
* since the mount settles its own once mounted; a listing then keeps each
* event's unsearched text for the search.
*/
capped;
constructor(opts) {
super(opts);
this.config = opts.config;
this.capped = opts.capped ?? (() => true);
this.timeRange = new TimeRange(opts.config.startTime, opts.config.endTime);
}
/**
* The day the default listing window centres on, `YYYY-MM-DD`.
*
* Taken in the mount's bucketing zone rather than the host's: the two
* disagree for several hours a day, so a window centred on the wrong one
* shifts the whole listing by a day around either midnight.
*
* A method rather than a module-level call so a test can pin it and so a
* long-lived mount does not freeze its window at construction time.
*/
today(tz) {
const pinned = this.config.today;
if (pinned !== undefined && pinned !== '')
return pinned;
return localDate(Date.now(), tz);
}
}
//# sourceMappingURL=gcal.js.map