aboutsummaryrefslogtreecommitdiffstats
path: root/teal-src
Commit message (Collapse)AuthorAgeFilesLines
* util.smqueue: Simplify compat table, fix dependent modules (thanks Martin)Kim Alvefur2021-12-161-15/+6
| | | | | | There was an off-by-one in the modulo calculation. Switching to a plain old array-table makes the apparent size of the queue wrong, but since some of the queue may not be available this is likely for the best.
* util.smqueue: Add missing method to Teal record specKim Alvefur2021-12-161-1/+2
|
* util.smqueue: Abstract queue with acknowledgements and overflowKim Alvefur2021-12-141-0/+107
| | | | | | | | Meant to be used in mod_smacks for XEP-0198 Meant to have a larger virtual size than actual number of items stored, on the theory that in most cases, the excess will be acked before needed for a resumption event.
* mod_cron: Add a 'weekly' job frequencyKim Alvefur2021-12-031-1/+2
|
* mod_cron: Initialize timestamp of new tasks to start of periodKim Alvefur2021-12-031-3/+3
| | | | | Makes it more generic so new periods (e.g. weekly etc) can be added easily.
* mod_cron: Follow convention of imports at the topKim Alvefur2021-12-031-1/+2
|
* mod_cron: Initialize daily tasks so they run around midnight UTCKim Alvefur2021-12-031-0/+5
| | | | | | Eventually the goal is to have daily tasks run while there is little activity, but that will vary with the server and the usage patterns of its users. This is a start anyway.
* mod_cron: Initial commit of periodic task runnerKim Alvefur2021-11-211-0/+98
| | | | | | A number of modules now have periodic tasks that need to run, e.g. for cleaning out old messages or files. This has highlighted a need for coordinating and optimizing scheduling of such tasks.
* teal: Describe the module API interfaceKim Alvefur2021-03-241-0/+145
| | | | Helps when writing modules in Teal
* util.pposix: Bind isatty(3)Kim Alvefur2021-07-041-0/+2
| | | | | Useful for disabling certain behavior, ANSI colors etc when not connected to a terminal.
* util.stanza: Export pretty printing functionKim Alvefur2021-06-291-0/+1
|
* teal: Add type spec for util.signalKim Alvefur2021-05-201-0/+41
|
* teal: Add type spec for util.ringbufferKim Alvefur2021-05-201-0/+20
|
* teal: Describe util.net.local_addresses() return typeKim Alvefur2021-05-201-1/+1
|
* teal: Add new util.hashes APIsKim Alvefur2021-05-201-0/+2
|
* util.datamapper: Don't include empty unwrapped arraysKim Alvefur2021-03-241-1/+4
| | | | | | Since there is no way to distinguish an empty such array from a zero-length array. Dropping it seems like the least annoying thing to do.
* util.datamapper: Fix error on attempt to coerce nil to somethingKim Alvefur2021-03-231-0/+1
| | | | | | Turns falsy values into nil instead of nothing, which ensures this function always has 1 return value, or table.insert({}) complains. Would still happen on some unexpected input, but that's actually a good thing.
* util.datamapper: Deal with locally built stanzas missing xmlnsKim Alvefur2021-03-231-5/+5
| | | | | | | | | | | | | | | | | | | | | So the problem is that xmlns is not inherited when building a stanza, and then :get_child(n, ns) with an explicit namespace does not find that such child tags. E.g. local t = st.stanza("foo", { xmlns = "urn:example:bar" }) :text_tag("hello", "world"); assert(t:get_child("hello", "urn:example:bar"), "This fails"); Meanwhile, during parsing (util.xmppstream or util.xml) child tags do get the parents xmlns when not overriding them. Thus, in the above example, if the stanza is passed trough `t = util.xml.parse(tostring(t))` then the assert succeeds. This change makes it so that it leaves out the namespace argument to :get_child when it is the same as the current/parent namespace, which behaves the same for both built and parsed stanzas.
* util.datamapper: Factor out conversion from any value to XML stringKim Alvefur2021-03-221-29/+17
| | | | Since this was the last severely duplicated code left.
* util.datamapper: Handle nested arrays or objects in arraysKim Alvefur2021-03-221-4/+22
|
* util.datamapper: Fix to skip parsing wrapped arrays that aren't thereKim Alvefur2021-03-221-2/+0
| | | | Turns out the unreachable error is reachable :D
* util.datamapper: Clear done TODO (arrays)Kim Alvefur2021-03-211-1/+0
| | | | | | | | | Relevant commits: * 6a51749af7f4 * 0e00fa518688 * d1982b7eb00d * c098d07e6717 * 348b191cd850
* util.datamapper: Complete array building supportKim Alvefur2021-03-201-12/+3
|
* util.datamapper: Factor out handling of object properties for array reuseKim Alvefur2021-03-201-79/+82
|
* util.datamapper: Finally implement support for parsing arraysKim Alvefur2021-03-201-17/+13
|
* util.datamapper: Factor out extraction of the XML part to useKim Alvefur2021-03-201-40/+42
| | | | | | | | So extract_value() takes an XML tag and details about which part we're interested in and returns that. Factoring this out will help with array implementation since this will be common behavior.
* util.datamapper: Only get element name if there's an elementKim Alvefur2021-03-191-1/+3
| | | | Fixes error due to attempting to index a nil value
* util.datamapper: Fix arrays nesting one level too deepKim Alvefur2021-03-191-9/+7
|
* util.datamapper: Deal with type name changes in util.jsonschemaKim Alvefur2021-03-191-29/+33
|
* util.jsonschema: Rename types for improved readabilityKim Alvefur2021-03-182-27/+44
|
* teal: Use new integer support in Teal 0.13.0Kim Alvefur2021-03-1814-53/+57
|
* util.datamapper: Limited support for unparsing simple arrays of stringsKim Alvefur2021-03-181-2/+32
|
* util.datamapper: Add initial support for parsing arraysKim Alvefur2021-03-181-9/+47
|
* util.datamapper: Factor out common schema unpackingKim Alvefur2021-03-141-83/+57
| | | | | This code extracts the bits from the schema that determines how the data is to be mapped to/from XML.
* util.datamapper: Separate extraction of xml from coercion to target typeKim Alvefur2021-03-141-34/+28
| | | | | | Now it gets the text, attribute or name first, then turns it into whatever the schema wants. This should be easier to further factor out into preparation for array support.
* util.datamapper: Use enum instead of mutually exclusive booleansKim Alvefur2021-03-141-20/+27
| | | | Cleaner and rules out invalid combinations.
* util.datamapper: Enumerated elementsKim Alvefur2021-03-121-1/+20
| | | | E.g. error conditions or chat states.
* util.datamapper: Some TODOsKim Alvefur2021-03-101-0/+4
|
* util.datamapper: Add references with notesKim Alvefur2021-03-101-0/+14
|
* util.datamapper: Add Copyright headerKim Alvefur2021-03-101-0/+6
|
* util.jsonschema: Add copyright-headerKim Alvefur2021-03-101-0/+9
|
* util.jsonschema: Restructure "type" keyword handlingKim Alvefur2021-03-091-9/+10
| | | | More in line with the other tests
* util.jsonschema: Syntax tweak to not upset syntax highlightingKim Alvefur2021-03-091-2/+2
| | | | | That whole condition stanza was shown as angry red, I think it's something with 'enum' being a key word in Teal.
* util.jsonschema: Implement "propertyNames"Kim Alvefur2021-03-091-0/+7
| | | | This is a bit special in Lua as tables are not limited to string keys
* util.jsonschema: Restructure handling of "properties" and "additionalProperties"Kim Alvefur2021-03-091-22/+8
| | | | This is a bit cleaner, I think
* util.jsonschema: Fix "uniqueItems" prematurely declaring a matchKim Alvefur2021-03-091-1/+0
|
* util.jsonschema: Implement the "prefixItems" keywordKim Alvefur2021-03-091-1/+13
| | | | This may have been what got me confused about "items" being an array.
* util.jsonschema: Implement the "contains" keywordKim Alvefur2021-03-091-1/+14
| | | | And apparently I had mistaken this for an array
* util.jsonschema: Allow a boolean as schemaKim Alvefur2021-03-091-1/+4
| | | | | | Apparently a schema must be either an object or a boolean. Not sure where I got this string shortcut from, but I think I will keep it as it is very convenient.
* util.jsonschema: Correct "items" keywordKim Alvefur2021-03-091-13/+5
| | | | | | Upon re-reading the JSON Schema spec, I found that 'items' wasn't a union of an array of schemas or a single schema, not sure where I got that from.