unified-query
Version:
Composable search input with autocompletion and a rich query-language parser for the Unified Data System
53 lines (52 loc) • 2.38 kB
JavaScript
/* -------------------------------------------------------------------------- */
/* Individual analysers */
/* -------------------------------------------------------------------------- */
import { analyzeArchived } from './archived.js';
import { analyzeChanged } from './changed.js';
import { analyzeDone } from './done.js';
import { analyzeContent } from './content.js';
import { analyzeCreated } from './created.js';
import { analyzeDate } from './date.js';
import { analyzeDeleted } from './deleted.js';
import { analyzeId } from './id.js';
import { analyzeIn } from './in.js';
import { analyzeName } from './name.js';
import { analyzeTime } from './time.js';
import { analyzeUpdated } from './updated.js';
import { analyzeSort } from './sort.js';
import { analyzeDraft } from './draft.js';
import { analyzeTodo } from './todo.js';
import { KINDS, analyzeKind } from './kind.js';
import { createUtilAnalyzer } from './utilAnalyzer.js';
import { analyzeBy } from './by.js';
/* -------------------------------------------------------------------------- */
/* Central dispatch table: keyword → analyser */
/* -------------------------------------------------------------------------- */
export const registry = {
/* identity / meta ------------------------------------------------------- */
id: analyzeId,
name: analyzeName,
content: analyzeContent,
/* relation -------------------------------------------------------------- */
in: analyzeIn,
by: analyzeBy,
/* timestamps ------------------------------------------------------------ */
created: analyzeCreated,
updated: analyzeUpdated,
changed: analyzeChanged,
deleted: analyzeDeleted,
archived: analyzeArchived,
date: analyzeDate, // TODO: depracate — no longer in the spec
time: analyzeTime,
/* workflow -------------------------------------------------------------- */
done: analyzeDone,
sort: analyzeSort,
draft: analyzeDraft,
todo: analyzeTodo,
kind: analyzeKind,
// TODO: add @limit analyzer
/* utilities -------------------------------------------------------------- */
today: createUtilAnalyzer('today'),
yesterday: createUtilAnalyzer('yesterday'),
...Object.fromEntries(KINDS.map(kind => [kind, createUtilAnalyzer(kind)])),
};