This is needed for slant, just posted. Version notes since the last update:
2018-10-09: version 0.6.3 Take unique statements into account when warning whether a search statement might return multiple results. Also add some examples for using unique. Fix a crash in kwebapp-xliff(1). 2018-09-26: version 0.6.1 Add ability to convert from JSON back into objects. This uses jsmn, as it's simple, fast, and easy to bundle directly into the sources. See the -J flag in kwebapp-c-header(1) and kwebapp-c-source(1) for details. 2018-09-06: version 0.6.0 Allow configuration files to be broken apart for several applications. Now, all kwebapp utilities may be invoked with multiple files per configuration. This has made kwebapp-sqldiff(1) and kwebapp-xliff(1) have slightly awkward syntax for many-many invocations, but the usual UNIX conventions of standard input and option parsing are respected. The existing calling convention is also still usable. For kwebapp-sqldiff(1), introduce the concept of a default value that's used in ALTER TABLE statements for new columns. This currently is only defined for number types. The default is documented in kwebapp(5). Rename xxx-yyy-date to xxx-yyy-date-value for consistency (oops!), then add xxx-yyy-date-text. 2018-08-25: version 0.5.7 Have several new class recognised in fill methods as generated by kwebapp-javascript(1). The xxx-yyy-bits-checked is now recognised for bit and bits types and it will check input boxes whose value is covered by the field's value. The xxx-yyy-date, for ISO 8601 formatting of epoch and date types. Lastly, xxx-yyy-value-checked for checking general input boxes matching input values. All of these is documented in the manpage and in the output jsdoc.
Index: Makefile =================================================================== RCS file: /cvs/ports/www/kwebapp/Makefile,v retrieving revision 1.4 diff -u -p -u -p -r1.4 Makefile --- Makefile 16 Aug 2018 23:56:33 -0000 1.4 +++ Makefile 15 Oct 2018 11:47:38 -0000 @@ -2,7 +2,7 @@ COMMENT = web application source generator -DISTNAME = kwebapp-0.5.6 +DISTNAME = kwebapp-0.6.3 CATEGORIES = www HOMEPAGE = https://kristaps.bsd.lv/kwebapp/ Index: distinfo =================================================================== RCS file: /cvs/ports/www/kwebapp/distinfo,v retrieving revision 1.4 diff -u -p -u -p -r1.4 distinfo --- distinfo 16 Aug 2018 23:56:33 -0000 1.4 +++ distinfo 15 Oct 2018 11:47:38 -0000 @@ -1,2 +1,2 @@ -SHA256 (kwebapp-0.5.6.tar.gz) = DaDvwKiZSIZb9jH5DtRgknTZIA8/ZJWMGNhizJTOugY= -SIZE (kwebapp-0.5.6.tar.gz) = 119389 +SHA256 (kwebapp-0.6.3.tar.gz) = Q9MABiBCn+Ubh5vvw3KYpS6rKDGe3wzyEcV1EBIreBI= +SIZE (kwebapp-0.6.3.tar.gz) = 131996 Index: patches/patch-db_txt =================================================================== RCS file: /cvs/ports/www/kwebapp/patches/patch-db_txt,v retrieving revision 1.1.1.1 diff -u -p -u -p -r1.1.1.1 patch-db_txt --- patches/patch-db_txt 14 Mar 2018 01:49:50 -0000 1.1.1.1 +++ patches/patch-db_txt 15 Oct 2018 11:47:38 -0000 @@ -1,96 +0,0 @@ -$OpenBSD: patch-db_txt,v 1.1.1.1 2018/03/14 01:49:50 abieber Exp $ - -Index: db.txt ---- db.txt.orig -+++ db.txt -@@ -0,0 +1,90 @@ -+# This is a top-level structure. -+# It's output as a struct in C, a table in SQL, and an object in -+# JavaScript. -+ -+struct company { -+ # The "limit" clause is for input validation. -+ field name text limit gt 0 comment -+ "Name of the organisation."; -+ # SQL primary keys. -+ field id int rowid; -+ field somenum int null comment -+ "Simply a check for null values."; -+ # Operations: a "list" function produces an in-memory -+ # queue of responses. -+ # "Insert" allows us to insert into the table. -+ list somenum isnull; -+ insert; -+ comment "Controlling organisation."; -+}; -+ -+# This is an enumeration. -+# It lets us validate input fields and use -+# better type-safety in the C API. -+# They're also export to JavaScript. -+ -+enum sex { -+ item male comment "Male"; -+ item female comment "Femmale"; -+ item other comment "Other"; -+ comment "Birthsex of individual"; -+}; -+ -+struct user { -+ # Foreign key support. -+ # This will produce a nested "struct company" filled -+ # in with the join on "cid" (see below). -+ field company struct cid comment -+ "This struct will be filled in from an inner join -+ on the \"cid\" variable."; -+ # The foreign key itself. -+ # We also stipulate an action on delete. -+ field cid:company.id int actdel cascade comment -+ "A foreign key reference."; -+ field sex enum sex comment -+ "User's birth sex."; -+ # Passwords are important and often screwed up. -+ # This automatically handles the logic of accepting -+ # passwords and hashing them on insertion. -+ # When we "search" on password fields, the system -+ # will do the hashing for us. -+ field hash password limit gt 0 comment -+ "Password hash. -+ This is passed to inserts and updates as a password, -+ then hashed within the implementation and extracted -+ (in listings and searches) as the hash value."; -+ field email email unique comment -+ "Unique e-mail address."; -+ field image blob null comment -+ "A PNG image or something."; -+ field name text comment -+ "User's full name."; -+ field uid int rowid; -+ iterate name: limit 5 comment -+ "Create a function that searches for users by a given -+ name; and, when found, invokes a callback function -+ provided the user structure."; -+ search email,hash: name creds comment -+ "Search for a unique user with their e-mail and -+ password. -+ This is a quick way to verify that a user has entered -+ the correct password for logging in."; -+ search uid: comment "Lookup by unique identifier."; -+ update hash: uid; -+ update email: uid; -+ insert; -+ comment "A regular user."; -+}; -+ -+struct session { -+ field user struct userid; -+ field userid:user.uid int comment "Associated user."; -+ field token int comment "Random cookie."; -+ field mtime epoch; -+ field id int rowid; -+ iterate user.company.name,mtime: name foo comment -+ "Search for company's logged-in users."; -+ insert; -+ delete id; -+ comment "Authenticated session."; -+}; Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/www/kwebapp/pkg/PLIST,v retrieving revision 1.2 diff -u -p -u -p -r1.2 PLIST --- pkg/PLIST 16 Aug 2018 23:56:33 -0000 1.2 +++ pkg/PLIST 15 Oct 2018 11:47:38 -0000 @@ -24,3 +24,6 @@ share/kwebapp/ share/kwebapp/audit.css share/kwebapp/audit.html share/kwebapp/audit.js +share/kwebapp/b64_ntop.c +share/kwebapp/gensalt.c +share/kwebapp/jsmn.c