diff --git a/README.md b/README.md deleted file mode 100644 index 29b7ff9..0000000 --- a/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Run from scratch - -## Database - -Create an empty database. The configured user needs to be able to create and alter stuff. - -## Configuration -Create a configuration file `$HOME/.config/notes.yaml` with the following content: - -```yaml -network: - address: '[::]' - port: 1371 - -websocket: - domains: - - notes.com - -database: - host: 127.0.0.1 - port: 5432 - name: notes.com - username: notes - password: SomePassword - -application: - directories: - static: /usr/local/share/notes - upload: /usr/local/lib/notes/upload - -session: - daysvalid: 31 -``` - -## User - -Create a user by running -``` -notes --createuser -``` diff --git a/TODO b/TODO deleted file mode 100644 index fa84dd8..0000000 --- a/TODO +++ /dev/null @@ -1,13 +0,0 @@ -* Fix dynamic tree updates when adding a new node -* Create new admin user when no user exists -* File deletion - - per file - - when deleting node and child nodes -* Move node - - -Long term -========= -* Load tree iteratively when needed -* Notification of timestamps -* Journal with quick insert of date and time diff --git a/config.go b/config.go index 4860517..41969cb 100644 --- a/config.go +++ b/config.go @@ -6,7 +6,7 @@ import ( // Standard "errors" - "os" + "io/ioutil" ) @@ -28,7 +28,6 @@ type Config struct { Static string Upload string } - NotificationBaseURL string } Session struct { @@ -38,7 +37,7 @@ type Config struct { func ConfigRead(filename string) (config Config, err error) { var rawConfigData []byte - rawConfigData, err = os.ReadFile(filename) + rawConfigData, err = ioutil.ReadFile(filename) if err != nil { return } err = yaml.Unmarshal(rawConfigData, &config) diff --git a/connection_manager.go b/connection_manager.go index d533bf4..8f11e54 100644 --- a/connection_manager.go +++ b/connection_manager.go @@ -6,6 +6,7 @@ import ( "github.com/gorilla/websocket" // Standard + "log" "net/http" ) @@ -71,7 +72,7 @@ func (cm *ConnectionManager) NewConnection(w http.ResponseWriter, r *http.Reques cm.connections[wsConn.UUID] = &wsConn // Successfully upgraded to a websocket connection. - logger.Info("websocket", "uuid", wsConn.UUID, "remote_addr", r.RemoteAddr) + log.Printf("[%s] Connection from %s", wsConn.UUID, r.RemoteAddr) go cm.ReadLoop(&wsConn) @@ -81,7 +82,9 @@ func (cm *ConnectionManager) NewConnection(w http.ResponseWriter, r *http.Reques // Prune closes an deletes connections. If this happened to be non-fatal, the // user will just have to reconnect. func (cm *ConnectionManager) Prune(wsConn *WsConnection, err error) {// {{{ - logger.Info("websocket", "op", "prune", "uuid", wsConn.UUID) + if false { + log.Printf("[%s] pruning connection [%s]\n", wsConn.UUID, err) + } wsConn.Conn.Close() wsConn.Pruned = true delete(cm.connections, wsConn.UUID) @@ -95,7 +98,8 @@ func (cm *ConnectionManager) ReadLoop(wsConn *WsConnection) {// {{{ break } - logger.Debug("websocket", "op", "read", "data", data) + log.Printf("%s\n", data) + //cm.Send(wsConn, response) } }// }}} diff --git a/db.go b/db.go index 2046724..4b6d9e8 100644 --- a/db.go +++ b/db.go @@ -1,13 +1,133 @@ package main import ( + // External + "github.com/jmoiron/sqlx" + _ "github.com/lib/pq" + // Standard - "database/sql" + "embed" + "errors" + "fmt" + "log" + "strconv" ) -// Queryable can take both a Db and a transaction -type Queryable interface { - Exec(string, ...any) (sql.Result, error) - Query(string, ...any) (*sql.Rows, error) - QueryRow(string, ...any) *sql.Row -} +var ( + dbConn string + db *sqlx.DB + + //go:embed sql/* + embedded embed.FS +) + +func dbInit() (err error) {// {{{ + dbConn = fmt.Sprintf( + "host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", + config.Database.Host, + config.Database.Port, + config.Database.Username, + config.Database.Password, + config.Database.Name, + ) + + log.Printf( + "\x1b[32mNotes\x1b[0m Connecting to database %s:%d\n", + config.Database.Host, + config.Database.Port, + ) + + if db, err = sqlx.Connect("postgres", dbConn); err != nil { + return + } + + if err = dbVerifyInternals(); err != nil { + return + } + + err = dbUpdate() + return +}// }}} +func dbVerifyInternals() (err error) {// {{{ + var rows *sqlx.Rows + if rows, err = db.Queryx( + `SELECT EXISTS ( + SELECT FROM pg_catalog.pg_class c + JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace + WHERE n.nspname = '_internal' + AND c.relname = 'db' + )`, + ); err != nil { + return + } + defer rows.Close() + var exists bool + rows.Next() + if err = rows.Scan(&exists); err != nil { + return + } + + if !exists { + log.Printf("\x1b[32mNotes\x1b[0m Creating _internal.db\n") + if _, err = db.Exec(` + CREATE SCHEMA "_internal"; + + CREATE TABLE "_internal".db ( + "key" varchar NOT NULL, + value varchar NULL, + CONSTRAINT db_pk PRIMARY KEY (key) + ); + + INSERT INTO _internal.db("key", "value") + VALUES('schema', '0'); + `, + ); err != nil { + return + } + } + return +}// }}} +func dbUpdate() (err error) {// {{{ + /* Current schema revision is read from database. + * Used to iterate through the embedded SQL updates + * up to the DB_SCHEMA version currently compiled + * program is made for. */ + var rows *sqlx.Rows + var schemaStr string + var schema int + rows, err = db.Queryx(`SELECT value FROM _internal.db WHERE "key"='schema'`) + if err != nil { return } + defer rows.Close() + + if !rows.Next() { + return errors.New("Table _interval.db missing schema row") + } + + if err = rows.Scan(&schemaStr); err != nil { + return + } + + // Run updates + schema, err = strconv.Atoi(schemaStr) + if err != nil { + return err + } + for i := (schema+1); i <= DB_SCHEMA; i++ { + log.Printf("\x1b[32mNotes\x1b[0m Upgrading SQL schema to revision %d\n", i) + sql, _ := embedded.ReadFile( + fmt.Sprintf("sql/%04d.sql", i), + ) + _, err = db.Exec(string(sql)) + if err != nil { + return + } + _, err = db.Exec(`UPDATE _internal.db SET "value"=$1 WHERE "key"='schema'`, i) + if err != nil { + return + } + } + + return +}// }}} + +// vim: foldmethod=marker diff --git a/file.go b/file.go index 0f8b5bc..0e297ca 100644 --- a/file.go +++ b/file.go @@ -5,6 +5,7 @@ import ( "github.com/jmoiron/sqlx" // Standard + "fmt" "time" ) @@ -19,11 +20,11 @@ type File struct { Uploaded time.Time } -func AddFile(userID int, file *File) (err error) { // {{{ - file.UserID = userID +func (session Session) AddFile(file *File) (err error) { // {{{ + file.UserID = session.UserID var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx(` + rows, err = db.Queryx(` INSERT INTO file(user_id, node_id, filename, size, mime, md5) VALUES($1, $2, $3, $4, $5, $6) RETURNING id @@ -42,11 +43,12 @@ func AddFile(userID int, file *File) (err error) { // {{{ rows.Next() err = rows.Scan(&file.ID) + fmt.Printf("%#v\n", file) return } // }}} -func Files(userID, nodeID, fileID int) (files []File, err error) { // {{{ +func (session Session) Files(nodeID, fileID int) (files []File, err error) { // {{{ var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx( + rows, err = db.Queryx( `SELECT * FROM file WHERE @@ -56,7 +58,7 @@ func Files(userID, nodeID, fileID int) (files []File, err error) { // {{{ WHEN 0 THEN true ELSE id = $3 END`, - userID, + session.UserID, nodeID, fileID, ) diff --git a/go.mod b/go.mod index 59b3275..9ced821 100644 --- a/go.mod +++ b/go.mod @@ -1,17 +1,11 @@ module notes -go 1.21.0 +go 1.20 require ( - git.gibonuddevalla.se/go/webservice v0.2.2 - git.gibonuddevalla.se/go/wrappederror v0.3.3 - github.com/google/uuid v1.5.0 + github.com/google/uuid v1.3.0 github.com/gorilla/websocket v1.5.0 github.com/jmoiron/sqlx v1.3.5 + github.com/lib/pq v1.10.9 gopkg.in/yaml.v3 v3.0.1 ) - -require ( - git.gibonuddevalla.se/go/dbschema v1.3.0 // indirect - github.com/lib/pq v1.10.9 // indirect -) diff --git a/go.sum b/go.sum index 6466326..a9127eb 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,7 @@ -git.gibonuddevalla.se/go/dbschema v1.3.0 h1:HzFMR29tWfy/ibIjltTbIMI4inVktj/rh8bESALibgM= -git.gibonuddevalla.se/go/dbschema v1.3.0/go.mod h1:BNw3q/574nXbGoeWyK+tLhRfggVkw2j2aXZzrBKC3ig= -git.gibonuddevalla.se/go/webservice v0.2.2 h1:pmfeLa7c9pSPbuu6TuzcJ6yuVwdMLJ8SSPm1IkusThk= -git.gibonuddevalla.se/go/webservice v0.2.2/go.mod h1:3uBS6nLbK9qbuGzDls8MZD5Xr9ORY1Srbj6v06BIhws= -git.gibonuddevalla.se/go/wrappederror v0.3.3 h1:pdIy3/daSY3zMmUr9PXW6ffIt8iYonOv64mgJBpKz+0= -git.gibonuddevalla.se/go/wrappederror v0.3.3/go.mod h1:j4w320Hk1wvhOPjUaK4GgLvmtnjUUM5yVu6JFO1OCSc= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= -github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= diff --git a/key.go b/key.go index aff0f3a..708fe39 100644 --- a/key.go +++ b/key.go @@ -3,6 +3,8 @@ package main import ( // External "github.com/jmoiron/sqlx" + + // Standard ) type Key struct { @@ -12,9 +14,9 @@ type Key struct { Key string } -func Keys(userID int) (keys []Key, err error) { // {{{ +func (session Session) Keys() (keys []Key, err error) {// {{{ var rows *sqlx.Rows - if rows, err = service.Db.Conn.Queryx(`SELECT * FROM crypto_key WHERE user_id=$1`, userID); err != nil { + if rows, err = db.Queryx(`SELECT * FROM crypto_key WHERE user_id=$1`, session.UserID); err != nil { return } defer rows.Close() @@ -29,14 +31,14 @@ func Keys(userID int) (keys []Key, err error) { // {{{ } return -} // }}} -func KeyCreate(userID int, description, keyEncoded string) (key Key, err error) { // {{{ +}// }}} +func (session Session) KeyCreate(description, keyEncoded string) (key Key, err error) {// {{{ var row *sqlx.Rows - if row, err = service.Db.Conn.Queryx( + if row, err = db.Queryx( `INSERT INTO crypto_key(user_id, description, key) VALUES($1, $2, $3) RETURNING *`, - userID, + session.UserID, description, keyEncoded, ); err != nil { @@ -52,10 +54,10 @@ func KeyCreate(userID int, description, keyEncoded string) (key Key, err error) } return -} // }}} -func KeyCounter() (counter int64, err error) { // {{{ +}// }}} +func (session Session) KeyCounter() (counter int64, err error) {// {{{ var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx(`SELECT nextval('aes_ccm_counter') AS counter`) + rows, err = db.Queryx(`SELECT nextval('aes_ccm_counter') AS counter`) if err != nil { return } @@ -64,6 +66,6 @@ func KeyCounter() (counter int64, err error) { // {{{ rows.Next() err = rows.Scan(&counter) return -} // }}} +}// }}} // vim: foldmethod=marker diff --git a/main.go b/main.go index 1b1b6a1..1d0f35f 100644 --- a/main.go +++ b/main.go @@ -1,228 +1,270 @@ package main import ( - // External - "git.gibonuddevalla.se/go/webservice" - "git.gibonuddevalla.se/go/wrappederror" - - // Internal - "git.gibonuddevalla.se/go/webservice/session" - "notes/notification" - // Standard "crypto/md5" - "embed" "encoding/hex" - "encoding/json" + "path/filepath" "flag" "fmt" + "html/template" "io" - "log/slog" + "log" "net/http" "os" - "path/filepath" - "strconv" + "path" + "regexp" "strings" + "strconv" "time" + _ "embed" ) -const LISTEN_HOST = "0.0.0.0" +const VERSION = "v6"; +const LISTEN_HOST = "0.0.0.0"; +const DB_SCHEMA = 10 var ( - flagPort int - flagVersion bool - flagCreateUser bool - flagCheckLocal bool - flagConfig string - - service *webservice.Service - connectionManager ConnectionManager - notificationManager notification.Manager - static http.Handler - config Config - logger *slog.Logger - schedulers map[int]Schedule - VERSION string - - //go:embed version sql/* - embeddedSQL embed.FS - - //go:embed static - staticFS embed.FS + flagPort int + connectionManager ConnectionManager + static http.Handler + config Config ) -func sqlProvider(dbname string, version int) (sql []byte, found bool) { // {{{ - var err error - sql, err = embeddedSQL.ReadFile(fmt.Sprintf("sql/%05d.sql", version)) - if err != nil { - return - } - found = true - return -} // }}} -func logCallback(e WrappedError.Error) { // {{{ - now := time.Now() - out := struct { - Year int - Month int - Day int - Time string - Error error - }{now.Year(), int(now.Month()), now.Day(), now.Format("15:04:05"), e} +func init() {// {{{ + flag.IntVar( + &flagPort, + "port", + 1371, + "TCP port to listen on", + ) - j, _ := json.Marshal(out) - file, err := os.OpenFile("/tmp/notes.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600) - if err != nil { - logger.Error("log", "error", err) - return - } - file.Write(j) - file.Write([]byte("\n")) - file.Close() -} // }}} - -func init() { // {{{ - version, _ := embeddedSQL.ReadFile("version") - VERSION = strings.TrimSpace(string(version)) - - opt := slog.HandlerOptions{} - opt.Level = slog.LevelDebug - logger = slog.New(slog.NewJSONHandler(os.Stdout, &opt)) - - schedulers = make(map[int]Schedule, 512) - - configFilename := os.Getenv("HOME") + "/.config/notes.yaml" - flag.IntVar(&flagPort, "port", 1371, "TCP port to listen on") - flag.BoolVar(&flagVersion, "version", false, "Shows Notes version and exists") - flag.BoolVar(&flagCreateUser, "createuser", false, "Create a user and exit") - flag.BoolVar(&flagCheckLocal, "checklocal", false, "Check for local static file before embedded") - flag.StringVar(&flagConfig, "config", configFilename, "Filename of configuration file") flag.Parse() -} // }}} -func main() { // {{{ - WrappedError.Init() - WrappedError.SetLogCallback(logCallback) + if false { + time.Sleep(time.Second*1) + } +}// }}} +func main() {// {{{ + var err error + log.Printf("\x1b[32mNotes\x1b[0m %s\n", VERSION) + + config, err = ConfigRead(os.Getenv("HOME")+"/.config/notes.yaml") + if err != nil { + fmt.Printf("%s\n", err) + os.Exit(1) + } + + if err = dbInit(); err != nil { + fmt.Printf("%s\n", err) + os.Exit(1) + } + + connectionManager = NewConnectionManager() + go connectionManager.BroadcastLoop() + + static = http.FileServer(http.Dir(config.Application.Directories.Static)) + http.HandleFunc("/css_updated", cssUpdateHandler) + http.HandleFunc("/session/create", sessionCreate) + http.HandleFunc("/session/retrieve", sessionRetrieve) + http.HandleFunc("/session/authenticate", sessionAuthenticate) + http.HandleFunc("/node/tree", nodeTree) + http.HandleFunc("/node/retrieve", nodeRetrieve) + http.HandleFunc("/node/create", nodeCreate) + http.HandleFunc("/node/update", nodeUpdate) + http.HandleFunc("/node/rename", nodeRename) + http.HandleFunc("/node/delete", nodeDelete) + http.HandleFunc("/node/upload", nodeUpload) + http.HandleFunc("/node/download", nodeDownload) + http.HandleFunc("/key/retrieve", keyRetrieve) + http.HandleFunc("/key/create", keyCreate) + http.HandleFunc("/key/counter", keyCounter) + http.HandleFunc("/ws", websocketHandler) + http.HandleFunc("/", staticHandler) + + listen := fmt.Sprintf("%s:%d", LISTEN_HOST, flagPort) + log.Printf("\x1b[32mNotes\x1b[0m Listening on %s\n", listen) + log.Printf("\x1b[32mNotes\x1b[0m Answer for domains %s\n", strings.Join(config.Websocket.Domains, ", ")) + http.ListenAndServe(listen, nil) +}// }}} + +func cssUpdateHandler(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("[BROADCAST] CSS updated") + connectionManager.Broadcast(struct{ Ok bool; ID string; Op string }{ Ok: true, Op: "css_reload" }) +}// }}} +func websocketHandler(w http.ResponseWriter, r *http.Request) {// {{{ var err error - if flagVersion { - fmt.Printf("%s\n", VERSION) - os.Exit(0) - } - logger.Info("application", "version", VERSION) - - config, err = ConfigRead(flagConfig) + _, err = connectionManager.NewConnection(w, r) if err != nil { - logger.Error("application", "error", err) - os.Exit(1) + log.Printf("[Connection] %s\n", err) + return + } +}// }}} +func staticHandler(w http.ResponseWriter, r *http.Request) {// {{{ + data := struct{ + VERSION string + }{ + VERSION: VERSION, } - service, err = webservice.New(flagConfig, VERSION, logger) + // URLs with pattern /(css|images)/v1.0.0/foobar are stripped of the version. + // To get rid of problems with cached content in browser on a new version release, + // while also not disabling cache altogether. + log.Printf("static: %s", r.URL.Path) + if r.URL.Path == "/favicon.ico" { + static.ServeHTTP(w, r) + return + } + + rxp := regexp.MustCompile("^/(css|images|js|fonts)/v[0-9]+/(.*)$") + if comp := rxp.FindStringSubmatch(r.URL.Path); comp != nil { + r.URL.Path = fmt.Sprintf("/%s/%s", comp[1], comp[2]) + static.ServeHTTP(w, r) + return + } + + // Everything else is run through the template system. + // For now to get VERSION into files to fix caching. + log.Printf("template: %s", r.URL.Path) + tmpl, err := newTemplate(r.URL.Path) if err != nil { - logger.Error("application", "error", err) - os.Exit(1) - } - service.SetDatabase(sqlProvider) - service.SetStaticDirectory("static", true) - service.SetStaticFS(staticFS, "static") - - service.Register("/node/upload", true, true, nodeUpload) - service.Register("/node/tree", true, true, nodeTree) - service.Register("/node/retrieve", true, true, nodeRetrieve) - service.Register("/node/create", true, true, nodeCreate) - service.Register("/node/update", true, true, nodeUpdate) - service.Register("/node/rename", true, true, nodeRename) - service.Register("/node/delete", true, true, nodeDelete) - service.Register("/node/download", true, true, nodeDownload) - service.Register("/node/search", true, true, nodeSearch) - service.Register("/node/checklist_group/add", true, true, nodeChecklistGroupAdd) - service.Register("/node/checklist_group/item_add", true, true, nodeChecklistGroupItemAdd) - service.Register("/node/checklist_group/label", true, true, nodeChecklistGroupLabel) - service.Register("/node/checklist_group/delete", true, true, nodeChecklistGroupDelete) - service.Register("/node/checklist_item/state", true, true, nodeChecklistItemState) - service.Register("/node/checklist_item/label", true, true, nodeChecklistItemLabel) - service.Register("/node/checklist_item/delete", true, true, nodeChecklistItemDelete) - service.Register("/node/checklist_item/move", true, true, nodeChecklistItemMove) - service.Register("/key/retrieve", true, true, keyRetrieve) - service.Register("/key/create", true, true, keyCreate) - service.Register("/key/counter", true, true, keyCounter) - service.Register("/notification/ack", false, false, notificationAcknowledge) - service.Register("/schedule/list", true, true, scheduleList) - service.Register("/", false, false, service.StaticHandler) - - if flagCreateUser { - service.CreateUserPrompt() - os.Exit(0) + if os.IsNotExist(err) { + w.WriteHeader(404) + } + w.Write([]byte(err.Error())) + return } - go scheduleHandler() - - if err = service.InitDatabaseConnection(); err != nil { - logger.Error("application", "error", err) - os.Exit(1) + if err = tmpl.Execute(w, data); err != nil { + w.Write([]byte(err.Error())) } +}// }}} - err = InitNotificationManager() +func sessionCreate(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/session/create") + session, err := CreateSession() if err != nil { - logger.Error("application", "error", err) - os.Exit(1) + responseError(w, err) + return } - - err = service.Start() - if err != nil { - logger.Error("webserver", "error", err) - os.Exit(1) - } -} // }}} - -func nodeTree(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/node/tree") + responseData(w, map[string]interface{}{ + "OK": true, + "Session": session, + }) +}// }}} +func sessionRetrieve(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/session/retrieve") var err error + var found bool + var session Session - req := struct{ StartNodeID int }{} + if session, found, err = ValidateSession(r, false); err != nil { + responseError(w, err) + return + } + + responseData(w, map[string]interface{}{ + "OK": true, + "Valid": found, + "Session": session, + }) +}// }}} +func sessionAuthenticate(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/session/authenticate") + var err error + var session Session + var authenticated bool + + // Validate session + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } + + req := struct{ Username string; Password string }{} if err = parseRequest(r, &req); err != nil { responseError(w, err) return } - nodes, err := NodeTree(sess.UserID, req.StartNodeID) + if authenticated, err = session.Authenticate(req.Username, req.Password); err != nil { + responseError(w, err) + return + } + + responseData(w, map[string]interface{}{ + "OK": true, + "Authenticated": authenticated, + "Session": session, + }) +}// }}} + +func nodeTree(w http.ResponseWriter, r *http.Request) {// {{{ + var err error + var session Session + + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } + + req := struct { StartNodeID int }{} + if err = parseRequest(r, &req); err != nil { + responseError(w, err) + return + } + + nodes, err := session.NodeTree(req.StartNodeID) if err != nil { responseError(w, err) return } responseData(w, map[string]interface{}{ - "OK": true, + "OK": true, "Nodes": nodes, }) -} // }}} -func nodeRetrieve(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/node/retrieve") +}// }}} +func nodeRetrieve(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/node/retrieve") var err error + var session Session - req := struct{ ID int }{} + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } + + req := struct { ID int }{} if err = parseRequest(r, &req); err != nil { responseError(w, err) return } - node, err := RetrieveNode(sess.UserID, req.ID) + node, err := session.Node(req.ID) if err != nil { responseError(w, err) return } responseData(w, map[string]interface{}{ - "OK": true, + "OK": true, "Node": node, }) -} // }}} -func nodeCreate(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/node/create") +}// }}} +func nodeCreate(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/node/create") var err error + var session Session + + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } req := struct { - Name string + Name string ParentID int }{} if err = parseRequest(r, &req); err != nil { @@ -230,34 +272,38 @@ func nodeCreate(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{ return } - node, err := CreateNode(sess.UserID, req.ParentID, req.Name) + node, err := session.CreateNode(req.ParentID, req.Name) if err != nil { responseError(w, err) return } responseData(w, map[string]interface{}{ - "OK": true, + "OK": true, "Node": node, }) -} // }}} -func nodeUpdate(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/node/update") +}// }}} +func nodeUpdate(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/node/update") var err error + var session Session + + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } req := struct { - NodeID int - Content string + NodeID int + Content string CryptoKeyID int - Markdown bool - TimeOffset int }{} if err = parseRequest(r, &req); err != nil { responseError(w, err) return } - err = UpdateNode(sess.UserID, req.NodeID, req.TimeOffset, req.Content, req.CryptoKeyID, req.Markdown) + err = session.UpdateNode(req.NodeID, req.Content, req.CryptoKeyID) if err != nil { responseError(w, err) return @@ -266,21 +312,26 @@ func nodeUpdate(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{ responseData(w, map[string]interface{}{ "OK": true, }) -} // }}} -func nodeRename(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ +}// }}} +func nodeRename(w http.ResponseWriter, r *http.Request) {// {{{ var err error - logger.Info("webserver", "request", "/node/rename") + var session Session + + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } req := struct { NodeID int - Name string + Name string }{} if err = parseRequest(r, &req); err != nil { responseError(w, err) return } - err = RenameNode(sess.UserID, req.NodeID, req.Name) + err = session.RenameNode(req.NodeID, req.Name) if err != nil { responseError(w, err) return @@ -289,10 +340,15 @@ func nodeRename(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{ responseData(w, map[string]interface{}{ "OK": true, }) -} // }}} -func nodeDelete(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ +}// }}} +func nodeDelete(w http.ResponseWriter, r *http.Request) {// {{{ var err error - logger.Info("webserver", "request", "/node/delete") + var session Session + + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } req := struct { NodeID int @@ -302,7 +358,7 @@ func nodeDelete(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{ return } - err = DeleteNode(sess.UserID, req.NodeID) + err = session.DeleteNode(req.NodeID) if err != nil { responseError(w, err) return @@ -311,10 +367,16 @@ func nodeDelete(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{ responseData(w, map[string]interface{}{ "OK": true, }) -} // }}} -func nodeUpload(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/node/upload") +}// }}} +func nodeUpload(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/node/upload") var err error + var session Session + + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } // Parse our multipart form, 10 << 20 specifies a maximum // upload of 10 MB files. @@ -341,19 +403,20 @@ func nodeUpload(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{ md5sumBytes := md5.Sum(fileBytes) md5sum := hex.EncodeToString(md5sumBytes[:]) + var nodeID int if nodeID, err = strconv.Atoi(r.PostFormValue("NodeID")); err != nil { responseError(w, err) return } nodeFile := File{ - NodeID: nodeID, + NodeID: nodeID, Filename: handler.Filename, - Size: handler.Size, - MIME: handler.Header.Get("Content-Type"), - MD5: md5sum, + Size: handler.Size, + MIME: handler.Header.Get("Content-Type"), + MD5: md5sum, } - if err = AddFile(sess.UserID, &nodeFile); err != nil { + if err = session.AddFile(&nodeFile); err != nil { responseError(w, err) return } @@ -386,15 +449,21 @@ func nodeUpload(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{ } responseData(w, map[string]interface{}{ - "OK": true, + "OK": true, "File": nodeFile, }) -} // }}} -func nodeDownload(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/node/download") +}// }}} +func nodeDownload(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/node/download") var err error + var session Session var files []File + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } + req := struct { NodeID int FileID int @@ -404,7 +473,7 @@ func nodeDownload(w http.ResponseWriter, r *http.Request, sess *session.T) { // return } - files, err = Files(sess.UserID, req.NodeID, req.FileID) + files, err = session.Files(req.NodeID, req.FileID) if err != nil { responseError(w, err) return @@ -414,7 +483,7 @@ func nodeDownload(w http.ResponseWriter, r *http.Request, sess *session.T) { // responseError(w, fmt.Errorf("File not found")) return } - + var file *os.File fname := filepath.Join( config.Application.Directories.Upload, @@ -450,12 +519,17 @@ func nodeDownload(w http.ResponseWriter, r *http.Request, sess *session.T) { // } } -} // }}} -func nodeFiles(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/node/files") +}// }}} +func nodeFiles(w http.ResponseWriter, r *http.Request) {// {{{ var err error + var session Session var files []File + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } + req := struct { NodeID int }{} @@ -464,149 +538,29 @@ func nodeFiles(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ return } - files, err = Files(sess.UserID, req.NodeID, 0) + files, err = session.Files(req.NodeID, 0) if err != nil { responseError(w, err) return } responseData(w, map[string]interface{}{ - "OK": true, + "OK": true, "Files": files, }) -} // }}} -func nodeSearch(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/node/search") +}// }}} + +func keyRetrieve(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/key/retrieve") var err error - var nodes []Node + var session Session - req := struct { - Search string - }{} - if err = parseRequest(r, &req); err != nil { + if session, _, err = ValidateSession(r, true); err != nil { responseError(w, err) return } - nodes, err = SearchNodes(sess.UserID, req.Search) - if err != nil { - responseError(w, err) - return - } - - responseData(w, map[string]interface{}{ - "OK": true, - "Nodes": nodes, - }) -} // }}} -func nodeChecklistGroupAdd(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - var err error - - req := struct { - NodeID int - Label string - }{} - if err = parseRequest(r, &req); err != nil { - responseError(w, err) - return - } - - var group ChecklistGroup - group, err = ChecklistGroupAdd(sess.UserID, req.NodeID, req.Label) - if err != nil { - responseError(w, err) - return - } - group.Items = []ChecklistItem{} - - responseData(w, map[string]interface{}{ - "OK": true, - "Group": group, - }) -} // }}} -func nodeChecklistGroupItemAdd(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - var err error - - req := struct { - ChecklistGroupID int - Label string - }{} - if err = parseRequest(r, &req); err != nil { - responseError(w, err) - return - } - - var item ChecklistItem - item, err = ChecklistGroupItemAdd(sess.UserID, req.ChecklistGroupID, req.Label) - if err != nil { - responseError(w, err) - return - } - - responseData(w, map[string]interface{}{ - "OK": true, - "Item": item, - }) -} // }}} -func nodeChecklistGroupLabel(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - var err error - - req := struct { - ChecklistGroupID int - Label string - }{} - if err = parseRequest(r, &req); err != nil { - responseError(w, err) - return - } - - var item ChecklistItem - item, err = ChecklistGroupLabel(sess.UserID, req.ChecklistGroupID, req.Label) - if err != nil { - responseError(w, err) - return - } - - responseData(w, map[string]interface{}{ - "OK": true, - "Item": item, - }) -} // }}} -func nodeChecklistGroupDelete(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - var err error - - req := struct { - ChecklistGroupID int - }{} - if err = parseRequest(r, &req); err != nil { - responseError(w, err) - return - } - - err = ChecklistGroupDelete(sess.UserID, req.ChecklistGroupID) - if err != nil { - logger.Error("checklist", "error", err) - responseError(w, err) - return - } - - responseData(w, map[string]interface{}{ - "OK": true, - }) -} // }}} -func nodeChecklistItemState(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - var err error - - req := struct { - ChecklistItemID int - State bool - }{} - if err = parseRequest(r, &req); err != nil { - responseError(w, err) - return - } - - err = ChecklistItemState(sess.UserID, req.ChecklistItemID, req.State) + keys, err := session.Keys() if err != nil { responseError(w, err) return @@ -614,120 +568,50 @@ func nodeChecklistItemState(w http.ResponseWriter, r *http.Request, sess *sessio responseData(w, map[string]interface{}{ "OK": true, - }) -} // }}} -func nodeChecklistItemLabel(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - var err error - - req := struct { - ChecklistItemID int - Label string - }{} - if err = parseRequest(r, &req); err != nil { - responseError(w, err) - return - } - - err = ChecklistItemLabel(sess.UserID, req.ChecklistItemID, req.Label) - if err != nil { - responseError(w, err) - return - } - - responseData(w, map[string]interface{}{ - "OK": true, - }) -} // }}} -func nodeChecklistItemDelete(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - var err error - - req := struct { - ChecklistItemID int - }{} - if err = parseRequest(r, &req); err != nil { - responseError(w, err) - return - } - - err = ChecklistItemDelete(sess.UserID, req.ChecklistItemID) - if err != nil { - logger.Error("checklist", "error", err) - responseError(w, err) - return - } - - responseData(w, map[string]interface{}{ - "OK": true, - }) -} // }}} -func nodeChecklistItemMove(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - var err error - - req := struct { - ChecklistItemID int - AfterItemID int - }{} - if err = parseRequest(r, &req); err != nil { - responseError(w, err) - return - } - - err = ChecklistItemMove(sess.UserID, req.ChecklistItemID, req.AfterItemID) - if err != nil { - logger.Error("checklist", "error", err) - responseError(w, err) - return - } - - responseData(w, map[string]interface{}{ - "OK": true, - }) -} // }}} - -func keyRetrieve(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/key/retrieve") - var err error - - keys, err := Keys(sess.UserID) - if err != nil { - responseError(w, err) - return - } - - responseData(w, map[string]interface{}{ - "OK": true, "Keys": keys, }) -} // }}} -func keyCreate(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/key/create") +}// }}} +func keyCreate(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/key/create") var err error + var session Session + + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } req := struct { Description string - Key string + Key string }{} if err = parseRequest(r, &req); err != nil { responseError(w, err) return } - key, err := KeyCreate(sess.UserID, req.Description, req.Key) + key, err := session.KeyCreate(req.Description, req.Key) if err != nil { responseError(w, err) return } responseData(w, map[string]interface{}{ - "OK": true, + "OK": true, "Key": key, }) -} // }}} -func keyCounter(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/key/counter") +}// }}} +func keyCounter(w http.ResponseWriter, r *http.Request) {// {{{ + log.Println("/key/counter") var err error + var session Session - counter, err := KeyCounter() + if session, _, err = ValidateSession(r, true); err != nil { + responseError(w, err) + return + } + + counter, err := session.KeyCounter() if err != nil { responseError(w, err) return @@ -738,53 +622,20 @@ func keyCounter(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{ // Javascript uses int32, thus getting a string counter for Javascript BigInt to parse. "Counter": strconv.FormatInt(counter, 10), }) -} // }}} +}// }}} -func notificationAcknowledge(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/notification/ack") - var err error - w.Header().Add("Access-Control-Allow-Origin", "*") - - err = AcknowledgeNotification(r.URL.Query().Get("uuid")) - if err != nil { - responseError(w, err) - return +func newTemplate(requestPath string) (tmpl *template.Template, err error) {// {{{ + // Append index.html if needed for further reading of the file + p := requestPath + if p[len(p)-1] == '/' { + p += "index.html" } + p = config.Application.Directories.Static + p - responseData(w, map[string]interface{}{ - "OK": true, - }) -} // }}} -func scheduleList(w http.ResponseWriter, r *http.Request, sess *session.T) { // {{{ - logger.Info("webserver", "request", "/schedule/list") - var err error - w.Header().Add("Access-Control-Allow-Origin", "*") + base := path.Base(p) + if tmpl, err = template.New(base).ParseFiles(p); err != nil { return } - request := struct { - NodeID int - StartDate time.Time - EndDate time.Time - }{} - body, _ := io.ReadAll(r.Body) - if len(body) > 0 { - err = json.Unmarshal(body, &request) - if err != nil { - responseError(w, err) - return - } - } - - var schedules []Schedule - schedules, err = FutureSchedules(sess.UserID, request.NodeID, request.StartDate, request.EndDate) - if err != nil { - responseError(w, err) - return - } - - responseData(w, map[string]interface{}{ - "OK": true, - "ScheduleEvents": schedules, - }) -} // }}} + return +}// }}} // vim: foldmethod=marker diff --git a/node.go b/node.go index a78785b..045b441 100644 --- a/node.go +++ b/node.go @@ -3,29 +3,11 @@ package main import ( // External "github.com/jmoiron/sqlx" - werr "git.gibonuddevalla.se/go/wrappederror" // Standard "time" - "database/sql" ) -type ChecklistItem struct { - ID int - GroupID int `db:"checklist_group_id"` - Order int - Label string - Checked bool -} - -type ChecklistGroup struct { - ID int - NodeID int `db:"node_id"` - Order int - Label string - Items []ChecklistItem -} - type Node struct { ID int UserID int `db:"user_id"` @@ -39,16 +21,11 @@ type Node struct { Files []File Complete bool Level int - - ChecklistGroups []ChecklistGroup - - ContentEncrypted string `db:"content_encrypted" json:"-"` - Markdown bool } -func NodeTree(userID, startNodeID int) (nodes []Node, err error) { // {{{ +func (session Session) NodeTree(startNodeID int) (nodes []Node, err error) {// {{{ var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx(` + rows, err = db.Queryx(` WITH RECURSIVE nodetree AS ( SELECT *, @@ -83,7 +60,7 @@ func NodeTree(userID, startNodeID int) (nodes []Node, err error) { // {{{ ORDER BY path ASC `, - userID, + session.UserID, startNodeID, ) if err != nil { @@ -100,9 +77,6 @@ func NodeTree(userID, startNodeID int) (nodes []Node, err error) { // {{{ for rows.Next() { node := Node{} node.Complete = false - node.Crumbs = []Node{} - node.Children = []Node{} - node.Files = []File{} if err = rows.StructScan(&node); err != nil { return } @@ -110,10 +84,10 @@ func NodeTree(userID, startNodeID int) (nodes []Node, err error) { // {{{ } return -} // }}} -func RootNode(userID int) (node Node, err error) { // {{{ +}// }}} +func (session Session) RootNode() (node Node, err error) {// {{{ var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx(` + rows, err = db.Queryx(` SELECT id, user_id, @@ -124,7 +98,7 @@ func RootNode(userID int) (node Node, err error) { // {{{ user_id = $1 AND parent_id IS NULL `, - userID, + session.UserID, ) if err != nil { return @@ -132,11 +106,11 @@ func RootNode(userID int) (node Node, err error) { // {{{ defer rows.Close() node.Name = "Start" - node.UserID = userID + node.UserID = session.UserID node.Complete = true node.Children = []Node{} - node.Crumbs = []Node{} - node.Files = []File{} + node.Crumbs = []Node{} + node.Files = []File{} for rows.Next() { row := Node{} if err = rows.StructScan(&row); err != nil { @@ -152,14 +126,14 @@ func RootNode(userID int) (node Node, err error) { // {{{ } return -} // }}} -func RetrieveNode(userID, nodeID int) (node Node, err error) { // {{{ +}// }}} +func (session Session) Node(nodeID int) (node Node, err error) {// {{{ if nodeID == 0 { - return RootNode(userID) + return session.RootNode() } var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx(` + rows, err = db.Queryx(` WITH RECURSIVE recurse AS ( SELECT id, @@ -168,8 +142,6 @@ func RetrieveNode(userID, nodeID int) (node Node, err error) { // {{{ COALESCE(crypto_key_id, 0) AS crypto_key_id, name, content, - content_encrypted, - markdown, 0 AS level FROM node WHERE @@ -185,8 +157,6 @@ func RetrieveNode(userID, nodeID int) (node Node, err error) { // {{{ COALESCE(n.crypto_key_id, 0) AS crypto_key_id, n.name, '' AS content, - '' AS content_encrypted, - false AS markdown, r.level + 1 AS level FROM node n INNER JOIN recurse r ON n.parent_id = r.id AND r.level = 0 @@ -196,7 +166,7 @@ func RetrieveNode(userID, nodeID int) (node Node, err error) { // {{{ SELECT * FROM recurse ORDER BY level ASC `, - userID, + session.UserID, nodeID, ) if err != nil { @@ -218,21 +188,13 @@ func RetrieveNode(userID, nodeID int) (node Node, err error) { // {{{ } if row.Level == 0 { - node.ID = row.ID - node.UserID = row.UserID - node.ParentID = row.ParentID + node.ID = row.ID + node.UserID = row.UserID + node.ParentID = row.ParentID node.CryptoKeyID = row.CryptoKeyID - node.Name = row.Name - node.Complete = true - node.Markdown = row.Markdown - - if node.CryptoKeyID > 0 { - node.Content = row.ContentEncrypted - } else { - node.Content = row.Content - } - - node.retrieveChecklist() + node.Name = row.Name + node.Content = row.Content + node.Complete = true } if row.Level == 1 { @@ -246,14 +208,14 @@ func RetrieveNode(userID, nodeID int) (node Node, err error) { // {{{ } } - node.Crumbs, err = NodeCrumbs(node.ID) - node.Files, err = Files(userID, node.ID, 0) + node.Crumbs, err = session.NodeCrumbs(node.ID) + node.Files, err = session.Files(node.ID, 0) return -} // }}} -func NodeCrumbs(nodeID int) (nodes []Node, err error) { // {{{ +}// }}} +func (session Session) NodeCrumbs(nodeID int) (nodes []Node, err error) {// {{{ var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx(` + rows, err = db.Queryx(` WITH RECURSIVE nodes AS ( SELECT id, @@ -278,7 +240,7 @@ func NodeCrumbs(nodeID int) (nodes []Node, err error) { // {{{ return } defer rows.Close() - + nodes = []Node{} for rows.Next() { node := Node{} @@ -288,11 +250,11 @@ func NodeCrumbs(nodeID int) (nodes []Node, err error) { // {{{ nodes = append(nodes, node) } return -} // }}} -func CreateNode(userID, parentID int, name string) (node Node, err error) { // {{{ +}// }}} +func (session Session) CreateNode(parentID int, name string) (node Node, err error) {// {{{ var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx(` + rows, err = db.Queryx(` INSERT INTO node(user_id, parent_id, name) VALUES($1, NULLIF($2, 0)::integer, $3) RETURNING @@ -302,7 +264,7 @@ func CreateNode(userID, parentID int, name string) (node Node, err error) { // { name, content `, - userID, + session.UserID, parentID, name, ) @@ -321,147 +283,41 @@ func CreateNode(userID, parentID int, name string) (node Node, err error) { // { node.Complete = true } - node.Crumbs, err = NodeCrumbs(node.ID) + node.Crumbs, err = session.NodeCrumbs(node.ID) return -} // }}} -func UpdateNode(userID, nodeID, timeOffset int, content string, cryptoKeyID int, markdown bool) (err error) { // {{{ - if nodeID == 0 { - return - } - - var timezone string - row := service.Db.Conn.QueryRow(`SELECT timezone FROM _webservice.user WHERE id=$1`, userID) - err = row.Scan(&timezone) - if err != nil { - err = werr.Wrap(err).WithCode("002-000F") - return - } - - var scannedSchedules, dbSchedules, add, remove []Schedule - scannedSchedules = ScanForSchedules(timezone, content) - for i := range scannedSchedules { - scannedSchedules[i].Node.ID = nodeID - scannedSchedules[i].UserID = userID - } - - var tsx *sql.Tx - tsx, err = service.Db.Conn.Begin() - if err != nil { - return - } - - dbSchedules, err = RetrieveSchedules(userID, nodeID) - if err != nil { - tsx.Rollback() - return - } - - for _, scanned := range scannedSchedules { - found := false - for _, db := range dbSchedules { - if scanned.IsEqual(db) { - found = true - break - } - } - if !found { - add = append(add, scanned) - } - } - - for _, db := range dbSchedules { - found := false - for _, scanned := range scannedSchedules { - if db.IsEqual(scanned) { - found = true - break - } - } - if !found { - remove = append(remove, db) - } - } - - for _, event := range remove { - err = event.Delete(tsx) - if err != nil { - tsx.Rollback() - return - } - } - - for _, event := range add { - err = event.Insert(tsx) - if err != nil { - tsx.Rollback() - return - } - } - - if cryptoKeyID > 0 { - _, err = tsx.Exec(` - UPDATE node - SET - content = '', - content_encrypted = $1, - markdown = $5, - crypto_key_id = CASE $2::int - WHEN 0 THEN NULL - ELSE $2 - END - WHERE - id = $3 AND - user_id = $4 - `, - content, - cryptoKeyID, - nodeID, - userID, - markdown, - ) - } else { - _, err = tsx.Exec(` - UPDATE node - SET - content = $1, - content_encrypted = '', - markdown = $5, - crypto_key_id = CASE $2::int - WHEN 0 THEN NULL - ELSE $2 - END - WHERE - id = $3 AND - user_id = $4 - `, - content, - cryptoKeyID, - nodeID, - userID, - markdown, - ) - } - if err != nil { - tsx.Rollback() - return - } - - err = tsx.Commit() - +}// }}} +func (session Session) UpdateNode(nodeID int, content string, cryptoKeyID int) (err error) {// {{{ + _, err = db.Exec(` + UPDATE node + SET + content = $1, + crypto_key_id = CASE $2::int + WHEN 0 THEN NULL + ELSE $2 + END + WHERE + id = $3 AND + user_id = $4 + `, + content, + cryptoKeyID, + nodeID, + session.UserID, + ) return -} // }}} -func RenameNode(userID, nodeID int, name string) (err error) { // {{{ - _, err = service.Db.Conn.Exec(` +}// }}} +func (session Session) RenameNode(nodeID int, name string) (err error) {// {{{ + _, err = db.Exec(` UPDATE node SET name = $1 WHERE user_id = $2 AND id = $3 `, name, - userID, + session.UserID, nodeID, ) return -} // }}} -func DeleteNode(userID, nodeID int) (err error) { // {{{ - _, err = service.Db.Conn.Exec(` +}// }}} +func (session Session) DeleteNode(nodeID int) (err error) {// {{{ + _, err = db.Exec(` WITH RECURSIVE nodetree AS ( SELECT id, parent_id @@ -480,326 +336,10 @@ func DeleteNode(userID, nodeID int) (err error) { // {{{ DELETE FROM node WHERE id IN ( SELECT id FROM nodetree )`, - userID, + session.UserID, nodeID, ) return -} // }}} -func SearchNodes(userID int, search string) (nodes []Node, err error) { // {{{ - nodes = []Node{} - var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx(` - SELECT - id, - user_id, - COALESCE(parent_id, 0) AS parent_id, - name, - updated - FROM node - WHERE - user_id = $1 AND - crypto_key_id IS NULL AND - ( - content ~* $2 OR - name ~* $2 - ) - ORDER BY - updated DESC - `, userID, search) - if err != nil { - return - } - defer rows.Close() - - for rows.Next() { - node := Node{} - node.Complete = false - if err = rows.StructScan(&node); err != nil { - return - } - nodes = append(nodes, node) - } - - return -} // }}} - -func ChecklistGroupAdd(userID, nodeID int, label string) (item ChecklistGroup, err error) { // {{{ - var row *sqlx.Row - row = service.Db.Conn.QueryRowx( - ` - INSERT INTO checklist_group(node_id, "order", "label") - ( - SELECT - $1, - MAX("order")+1 AS "order", - $2 AS "label" - FROM checklist_group g - INNER JOIN node n ON g.node_id = n.id - WHERE - user_id = $3 AND - node_id = $1 - GROUP BY - node_id - ) UNION ( - SELECT - node.id AS node_id, - 0 AS "order", - $2 AS "label" - FROM node - WHERE - user_id = $3 AND - node.id = $1 - ) - ORDER BY "order" DESC - LIMIT 1 - RETURNING - * - `, - nodeID, - label, - userID, - ) - err = row.StructScan(&item) - return -} // }}} -func ChecklistGroupLabel(userID, checklistGroupID int, label string) (item ChecklistItem, err error) { // {{{ - _, err = service.Db.Conn.Exec( - ` - UPDATE checklist_group g - SET label = $3 - FROM node n - WHERE - g.node_id = n.id AND - n.user_id = $1 AND - g.id = $2; - `, - userID, - checklistGroupID, - label, - ) - return -} // }}} -func ChecklistGroupItemAdd(userID, checklistGroupID int, label string) (item ChecklistItem, err error) { // {{{ - var row *sqlx.Row - row = service.Db.Conn.QueryRowx( - ` - INSERT INTO checklist_item(checklist_group_id, "order", "label") - ( - SELECT - checklist_group_id, - MAX("order")+1 AS "order", - $1 AS "label" - FROM checklist_item - WHERE - checklist_group_id = $2 - GROUP BY - checklist_group_id - ) UNION ( - SELECT $2 AS checklist_group_id, 0 AS "order", $1 AS "label" - ) - ORDER BY "order" DESC - LIMIT 1 - RETURNING - * - `, - label, - checklistGroupID, - ) - err = row.StructScan(&item) - return -} // }}} -func ChecklistGroupDelete(userID, checklistGroupID int) (err error) { // {{{ - _, err = service.Db.Conn.Exec( - ` - DELETE - FROM checklist_group g - USING - node n - WHERE - g.id = $2 AND - g.node_id = n.id AND - n.user_id = $1 - `, - userID, - checklistGroupID, - ) - return -} // }}} - -func ChecklistItemState(userID, checklistItemID int, state bool) (err error) { // {{{ - _, err = service.Db.Conn.Exec( - ` - UPDATE checklist_item i - SET checked = $3 - FROM checklist_group g, node n - WHERE - i.checklist_group_id = g.id AND - g.node_id = n.id AND - n.user_id = $1 AND - i.id = $2; - `, - userID, - checklistItemID, - state, - ) - return -} // }}} -func ChecklistItemLabel(userID, checklistItemID int, label string) (err error) { // {{{ - _, err = service.Db.Conn.Exec( - ` - UPDATE checklist_item i - SET label = $3 - FROM checklist_group g, node n - WHERE - i.checklist_group_id = g.id AND - g.node_id = n.id AND - n.user_id = $1 AND - i.id = $2; - `, - userID, - checklistItemID, - label, - ) - return -} // }}} -func ChecklistItemDelete(userID, checklistItemID int) (err error) { // {{{ - _, err = service.Db.Conn.Exec( - ` - DELETE - FROM checklist_item i - USING - checklist_group g, - node n - WHERE - i.id = $2 AND - i.checklist_group_id = g.id AND - g.node_id = n.id AND - n.user_id = $1 - `, - userID, - checklistItemID, - ) - return -} // }}} -func ChecklistItemMove(userID, checklistItemID, afterItemID int) (err error) { // {{{ - _, err = service.Db.Conn.Exec( - ` - WITH - "to" AS ( - SELECT - i.checklist_group_id AS group_id, - i."order" - FROM checklist_item i - INNER JOIN checklist_group g ON i.checklist_group_id = g.id - INNER JOIN node n ON g.node_id = n.id - WHERE - n.user_id = $1 AND - i.id = $3 - ), - - update_order AS ( - UPDATE checklist_item - SET - "order" = - CASE - WHEN checklist_item."order" <= "to"."order" THEN checklist_item."order" - 1 - WHEN checklist_item."order" > "to"."order" THEN checklist_item."order" + 1 - END - FROM "to" - WHERE - checklist_item.id != $2 AND - checklist_item.checklist_group_id = "to".group_id - ) - - UPDATE checklist_item - SET - checklist_group_id = "to".group_id, - "order" = "to"."order" - FROM "to" - WHERE - checklist_item.id = $2 - `, - userID, - checklistItemID, - afterItemID, - ) - return -} // }}} - -func (node *Node) retrieveChecklist() (err error) { // {{{ - var rows *sqlx.Rows - rows, err = service.Db.Conn.Queryx(` - SELECT - g.id AS group_id, - g.order AS group_order, - g.label AS group_label, - - COALESCE(i.id, 0) AS item_id, - COALESCE(i.order, 0) AS item_order, - COALESCE(i.label, '') AS item_label, - COALESCE(i.checked, false) AS checked - - FROM public.checklist_group g - LEFT JOIN public.checklist_item i ON i.checklist_group_id = g.id - WHERE - g.node_id = $1 - ORDER BY - g.order DESC, - i.order DESC - `, node.ID) - if err != nil { - return - } - defer rows.Close() - - groups := make(map[int]*ChecklistGroup) - var found bool - var group *ChecklistGroup - var item ChecklistItem - for rows.Next() { - row := struct { - GroupID int `db:"group_id"` - GroupOrder int `db:"group_order"` - GroupLabel string `db:"group_label"` - - ItemID int `db:"item_id"` - ItemOrder int `db:"item_order"` - ItemLabel string `db:"item_label"` - Checked bool - }{} - err = rows.StructScan(&row) - if err != nil { - return - } - - if group, found = groups[row.GroupID]; !found { - group = new(ChecklistGroup) - group.ID = row.GroupID - group.NodeID = node.ID - group.Order = row.GroupOrder - group.Label = row.GroupLabel - group.Items = []ChecklistItem{} - groups[group.ID] = group - } - - item = ChecklistItem{} - item.ID = row.ItemID - item.GroupID = row.GroupID - item.Order = row.ItemOrder - item.Label = row.ItemLabel - item.Checked = row.Checked - - if item.ID > 0 { - group.Items = append(group.Items, item) - } - } - - node.ChecklistGroups = []ChecklistGroup{} - for _, group := range groups { - node.ChecklistGroups = append(node.ChecklistGroups, *group) - } - - return -} // }}} +}// }}} // vim: foldmethod=marker diff --git a/notification/factory.go b/notification/factory.go deleted file mode 100644 index cc4d145..0000000 --- a/notification/factory.go +++ /dev/null @@ -1,15 +0,0 @@ -package notification - -import ( - // External - werr "git.gibonuddevalla.se/go/wrappederror" -) - -func ServiceFactory(t string, config []byte, prio int, ackURL string) (Service, error) { - switch t { - case "NTFY": - return NewNTFY(config, prio, ackURL) - } - - return nil, werr.New("Unknown notification service, '%s'", t).WithCode("002-0000") -} diff --git a/notification/ntfy.go b/notification/ntfy.go deleted file mode 100644 index 91a5a55..0000000 --- a/notification/ntfy.go +++ /dev/null @@ -1,72 +0,0 @@ -package notification - -import ( - // External - werr "git.gibonuddevalla.se/go/wrappederror" - - // Standard - "bytes" - "encoding/json" - "fmt" - "io" - "net/http" -) - -type NTFY struct { - URL string - Prio int - AcknowledgeURL string -} - -func NewNTFY(config []byte, prio int, ackURL string) (instance NTFY, err error) { - err = json.Unmarshal(config, &instance) - if err != nil { - err = werr.Wrap(err).WithCode("002-0001").WithData(config) - return - } - instance.Prio = prio - instance.AcknowledgeURL = ackURL - return instance, nil -} - -func (ntfy NTFY) GetPrio() int { - return ntfy.Prio -} - -func (ntfy NTFY) Send(uuid string, msg []byte) (err error) { - var req *http.Request - var res *http.Response - req, err = http.NewRequest("POST", ntfy.URL, bytes.NewReader(msg)) - if err != nil { - err = werr.Wrap(err).WithCode("002-0002").WithData(ntfy.URL) - return - } - - ackURL := fmt.Sprintf("http, OK, %s/notification/ack?uuid=%s", ntfy.AcknowledgeURL, uuid) - req.Header.Add("X-Actions", ackURL) - req.Header.Add("X-Priority", "5") - req.Header.Add("X-Tags", "calendar") - - res, err = http.DefaultClient.Do(req) - if err != nil { - err = werr.Wrap(err).WithCode("002-0003") - return - } - - body, _ := io.ReadAll(res.Body) - if res.StatusCode != 200 { - err = werr.New("Invalid NTFY response").WithCode("002-0004").WithData(body) - return - } - - ntfyResp := struct { - ID string - }{} - err = json.Unmarshal(body, &ntfyResp) - if err != nil { - err = werr.Wrap(err).WithCode("002-0005").WithData(body) - return - } - - return -} diff --git a/notification/pkg.go b/notification/pkg.go deleted file mode 100644 index b74a6b1..0000000 --- a/notification/pkg.go +++ /dev/null @@ -1,60 +0,0 @@ -package notification - -import ( - // External - werr "git.gibonuddevalla.se/go/wrappederror" - - // Standard - _ "fmt" - "slices" -) - -type Service interface { - GetPrio() int - Send(string, []byte) error -} - -type Manager struct { - services map[int][]Service -} - -func NewManager() (nm Manager) { - nm.services = make(map[int][]Service, 32) - return -} - -func (nm *Manager) AddService(userID int, service Service) { - var services []Service - var found bool - if services, found = nm.services[userID]; !found { - services = []Service{} - } - - services = append(services, service) - slices.SortFunc(services, func(a, b Service) int { - if a.GetPrio() < b.GetPrio() { - return -1 - } - if a.GetPrio() > b.GetPrio() { - return 1 - } - return 0 - }) - nm.services[userID] = services -} - -func (nm *Manager) Send(userID int, uuid string, msg []byte) (err error) { - - services, found := nm.services[userID] - if !found { - return werr.New("No notification services defined for user ID %d", userID).WithCode("002-0008") - } - - for _, service := range services { - if err = service.Send(uuid, msg); err == nil { - break - } - } - - return -} diff --git a/notification_manager.go b/notification_manager.go deleted file mode 100644 index 5d674da..0000000 --- a/notification_manager.go +++ /dev/null @@ -1,75 +0,0 @@ -package main - -import ( - // External - werr "git.gibonuddevalla.se/go/wrappederror" - - // Internal - "notes/notification" - - // Standard - "database/sql" - "encoding/json" -) - -type DbNotificationService struct { - ID int - UserID int `json:"user_id"` - Service string - Configuration string - Prio int -} - -func InitNotificationManager() (err error) {// {{{ - var dbServices []DbNotificationService - var row *sql.Row - - row = service.Db.Conn.QueryRow(` - WITH services AS ( - SELECT - id, - user_id, - prio, - service, - configuration::varchar - FROM notification n - ORDER BY - user_id ASC, - prio ASC - ) - SELECT COALESCE(jsonb_agg(s.*), '[]') - FROM services s - `, - ) - var dbData []byte - err = row.Scan(&dbData) - if err != nil { - err = werr.Wrap(err).WithCode("002-0006") - return - } - - err = json.Unmarshal(dbData, &dbServices) - if err != nil { - err = werr.Wrap(err).WithCode("002-0007") - return - } - - notificationManager = notification.NewManager() - var service notification.Service - for _, dbService := range dbServices { - service, err = notification.ServiceFactory( - dbService.Service, - []byte(dbService.Configuration), - dbService.Prio, - config.Application.NotificationBaseURL, - ) - notificationManager.AddService(dbService.UserID, service) - } - - return -}// }}} - -func AcknowledgeNotification(uuid string) (err error) {// {{{ - _, err = service.Db.Conn.Exec(`UPDATE schedule SET acknowledged=true WHERE schedule_uuid=$1`, uuid) - return -}// }}} diff --git a/request_response.go b/request_response.go index 5eaea5b..c2c6ba5 100644 --- a/request_response.go +++ b/request_response.go @@ -1,9 +1,6 @@ package main import ( - // External - werr "git.gibonuddevalla.se/go/wrappederror" - // Standard "encoding/json" "io" @@ -21,8 +18,6 @@ func responseError(w http.ResponseWriter, err error) { } resJSON, _ := json.Marshal(res) - - werr.Wrap(err).Log() w.Header().Add("Content-Type", "application/json") w.Write(resJSON) } diff --git a/schedule.go b/schedule.go deleted file mode 100644 index fe4b7b5..0000000 --- a/schedule.go +++ /dev/null @@ -1,289 +0,0 @@ -package main - -import ( - // External - werr "git.gibonuddevalla.se/go/wrappederror" - - // Standard - "encoding/json" - "fmt" - "regexp" - "strconv" - "strings" - "time" -) - -func init() { - fmt.Printf("") -} - -type Schedule struct { - ID int - UserID int `json:"user_id" db:"user_id"` - Node Node - ScheduleUUID string `db:"schedule_uuid"` - Time time.Time - RemindMinutes int `db:"remind_minutes"` - Description string - Acknowledged bool -} - -func scheduleHandler() { // {{{ - // Wait for the approximate minute. - wait := 60000 - time.Now().Sub(time.Now().Truncate(time.Minute)).Milliseconds() - logger.Info("schedule", "wait", wait/1000) - time.Sleep(time.Millisecond * time.Duration(wait)) - tick := time.NewTicker(time.Minute) - for { - schedules := ExpiredSchedules() - for _, event := range schedules { - notificationManager.Send( - event.UserID, - event.ScheduleUUID, - []byte( - fmt.Sprintf( - "%s\n%s", - event.Time.Format("2006-01-02 15:04"), - event.Description, - ), - ), - ) - } - <-tick.C - } -} // }}} - -func ScanForSchedules(timezone string, content string) (schedules []Schedule) { // {{{ - schedules = []Schedule{} - - rxp := regexp.MustCompile(`\{\s*([0-9]{4}-[0-9]{2}-[0-9]{2}\s+[0-9]{2}:[0-9]{2}(?::[0-9]{2})?)\s*\,\s*(?:(\d+)\s*(h|min)\s*,)?\s*([^\]]+?)\s*\}`) - foundSchedules := rxp.FindAllStringSubmatch(content, -1) - - for _, data := range foundSchedules { - // Missing seconds - if strings.Count(data[1], ":") == 1 { - data[1] = data[1] + ":00" - } - - logger.Info("time", "parse", data[1]) - location, err := time.LoadLocation(timezone) - if err != nil { - err = werr.Wrap(err).WithCode("002-00010") - return - } - - timestamp, err := time.ParseInLocation("2006-01-02 15:04:05", data[1], location) - if err != nil { - continue - } - - // Reminder - var remindMinutes int - if data[2] != "" && data[3] != "" { - value, _ := strconv.Atoi(data[2]) - unit := strings.ToLower(data[3]) - switch unit { - case "min": - remindMinutes = value - case "h": - remindMinutes = value * 60 - } - } - - schedule := Schedule{ - Time: timestamp, - RemindMinutes: remindMinutes, - Description: data[4], - } - schedules = append(schedules, schedule) - } - - return -} // }}} -func RetrieveSchedules(userID int, nodeID int) (schedules []Schedule, err error) { // {{{ - schedules = []Schedule{} - - res := service.Db.Conn.QueryRow(` - WITH schedule_events AS ( - SELECT - s.id, - s.user_id, - json_build_object('id', s.node_id) AS node, - s.schedule_uuid, - (time - MAKE_INTERVAL(mins => s.remind_minutes)) AT TIME ZONE u.timezone AS time, - s.description, - s.acknowledged - FROM schedule s - INNER JOIN _webservice.user u ON s.user_id = u.id - WHERE - user_id=$1 AND - CASE - WHEN $2 > 0 THEN node_id = $2 - ELSE true - END - ) - SELECT - COALESCE(jsonb_agg(s.*), '[]'::jsonb) - FROM schedule_events s - `, - userID, - nodeID, - ) - - var data []byte - err = res.Scan(&data) - if err != nil { - err = werr.Wrap(err).WithCode("002-000E") - return - } - - err = json.Unmarshal(data, &schedules) - return -} // }}} - -func (a Schedule) IsEqual(b Schedule) bool { // {{{ - return a.UserID == b.UserID && - a.Node.ID == b.Node.ID && - a.Time.Equal(b.Time) && - a.RemindMinutes == b.RemindMinutes && - a.Description == b.Description -} // }}} -func (s *Schedule) Insert(queryable Queryable) error { // {{{ - res := queryable.QueryRow(` - INSERT INTO schedule(user_id, node_id, time, remind_minutes, description) - VALUES($1, $2, $3, $4, $5) - RETURNING id - `, - s.UserID, - s.Node.ID, - s.Time.Format("2006-01-02 15:04:05"), - s.RemindMinutes, - s.Description, - ) - - err := res.Scan(&s.ID) - if err != nil { - err = werr.Wrap(err).WithCode("002-000D") - } - return err -} // }}} -func (s *Schedule) Delete(queryable Queryable) error { // {{{ - _, err := queryable.Exec(` - DELETE FROM schedule - WHERE - user_id = $1 AND - id = $2 - `, - s.UserID, - s.ID, - ) - return err -} // }}} - -func ExpiredSchedules() (schedules []Schedule) { // {{{ - schedules = []Schedule{} - - res, err := service.Db.Conn.Queryx(` - SELECT - s.id, - s.user_id, - s.node_id, - s.schedule_uuid, - (s.time - MAKE_INTERVAL(mins => s.remind_minutes)) AT TIME ZONE u.timezone AS time, - s.description - FROM schedule s - INNER JOIN _webservice.user u ON s.user_id = u.id - WHERE - (time - MAKE_INTERVAL(mins => remind_minutes)) AT TIME ZONE u.timezone < NOW() AND - NOT acknowledged - ORDER BY - time ASC - `) - if err != nil { - err = werr.Wrap(err).WithCode("002-0009") - return - } - defer res.Close() - - for res.Next() { - s := Schedule{} - if err = res.Scan(&s.ID, &s.UserID, &s.Node.ID, &s.ScheduleUUID, &s.Time, &s.Description); err != nil { - werr.Wrap(err).WithCode("002-000a") - continue - } - schedules = append(schedules, s) - } - return -} // }}} -func FutureSchedules(userID int, nodeID int, start time.Time, end time.Time) (schedules []Schedule, err error) { // {{{ - schedules = []Schedule{} - - var foo string - row := service.Db.Conn.QueryRow(`SELECT TO_CHAR($1::date AT TIME ZONE 'UTC', 'yyyy-mm-dd HH24:MI')`, start) - err = row.Scan(&foo) - if err != nil { - return - } - logger.Info("FOO", "date", foo) - - res := service.Db.Conn.QueryRow(` - WITH schedule_events AS ( - SELECT - s.id, - s.user_id, - jsonb_build_object( - 'id', n.id, - 'name', n.name, - 'updated', n.updated - ) AS node, - s.schedule_uuid, - time AT TIME ZONE u.timezone AS time, - s.description, - s.acknowledged, - s.remind_minutes AS RemindMinutes - FROM schedule s - INNER JOIN _webservice.user u ON s.user_id = u.id - INNER JOIN node n ON s.node_id = n.id - WHERE - s.user_id = $1 AND - ( - CASE - WHEN $2 > 0 THEN n.id = $2 - ELSE true - END - ) AND ( - CASE WHEN TO_CHAR($3::date, 'yyyy-mm-dd HH24:MI') = '0001-01-01 00:00' THEN TRUE - ELSE (s.time AT TIME ZONE u.timezone) >= $3 - END - ) AND ( - CASE WHEN TO_CHAR($4::date, 'yyyy-mm-dd HH24:MI') = '0001-01-01 00:00' THEN TRUE - ELSE (s.time AT TIME ZONE u.timezone) <= $4 - END - ) AND - time >= NOW() AND - NOT acknowledged - ) - SELECT - COALESCE(jsonb_agg(s.*), '[]'::jsonb) - FROM schedule_events s - `, - userID, - nodeID, - start, - end, - ) - var j []byte - err = res.Scan(&j) - if err != nil { - err = werr.Wrap(err).WithCode("002-000B").WithData(userID) - return - } - - err = json.Unmarshal(j, &schedules) - if err != nil { - err = werr.Wrap(err).WithCode("002-0010").WithData(string(j)).Log() - return - } - - return -} // }}} diff --git a/session.go b/session.go new file mode 100644 index 0000000..2457eb3 --- /dev/null +++ b/session.go @@ -0,0 +1,119 @@ +package main + +import ( + // Standard + "database/sql" + "errors" + "fmt" + "net/http" + "time" +) + +type Session struct { + UUID string + UserID int + Created time.Time +} + +func CreateSession() (session Session, err error) {// {{{ + var rows *sql.Rows + if rows, err = db.Query(` + INSERT INTO public.session(uuid) + VALUES(gen_random_uuid()) + RETURNING uuid, created`, + ); err != nil { + return + } + defer rows.Close() + + if rows.Next() { + rows.Scan(&session.UUID, &session.Created) + } + + return +}// }}} + +func sessionUUID(r *http.Request) (string, error) {// {{{ + headers := r.Header["X-Session-Id"] + if len(headers) > 0 { + return headers[0], nil + } + return "", errors.New("Invalid session") +}// }}} +func ValidateSession(r *http.Request, notFoundIsError bool) (session Session, found bool, err error) {// {{{ + var uuid string + if uuid, err = sessionUUID(r); err != nil { + return + } + + session.UUID = uuid + if found, err = session.Retrieve(); err != nil { + return + } + + if notFoundIsError && !found { + err = errors.New("Invalid session") + return + } + + return +}// }}} + +func (session *Session) Retrieve() (found bool, err error) {// {{{ + var rows *sql.Rows + if rows, err = db.Query(` + SELECT + uuid, user_id, created + FROM public.session + WHERE + uuid = $1 AND + created + $2::interval >= NOW() + `, + session.UUID, + fmt.Sprintf("%d days", config.Session.DaysValid), + ); err != nil { + return + } + defer rows.Close() + + found = false + if rows.Next() { + found = true + rows.Scan(&session.UUID, &session.UserID, &session.Created) + } + + return +}// }}} +func (session *Session) Authenticate(username, password string) (authenticated bool, err error) {// {{{ + var rows *sql.Rows + if rows, err = db.Query(` + SELECT id + FROM public.user + WHERE + username=$1 AND + password=$2 + `, + username, + password, + ); err != nil { + return + } + defer rows.Close() + + if rows.Next() { + rows.Scan(&session.UserID) + authenticated = session.UserID > 0 + } + + if authenticated { + _, err = db.Exec("UPDATE public.session SET user_id=$1 WHERE uuid=$2", session.UserID, session.UUID) + if err != nil { + return + } + } + + return +}// }}} + + +// vim: foldmethod=marker diff --git a/sql/00001.sql b/sql/0001.sql similarity index 100% rename from sql/00001.sql rename to sql/0001.sql diff --git a/sql/00011.sql b/sql/00011.sql deleted file mode 100644 index f6107f1..0000000 --- a/sql/00011.sql +++ /dev/null @@ -1,5 +0,0 @@ -ALTER TABLE node ADD COLUMN content_encrypted TEXT NOT NULL DEFAULT ''; -UPDATE node SET content_encrypted = content, content = '' WHERE crypto_key_id IS NOT NULL; - -CREATE EXTENSION pg_trgm; -CREATE INDEX node_content_index ON node USING gin (content gin_trgm_ops); diff --git a/sql/00012.sql b/sql/00012.sql deleted file mode 100644 index 80ed44f..0000000 --- a/sql/00012.sql +++ /dev/null @@ -1,2 +0,0 @@ -DROP INDEX node_content_index; -CREATE INDEX node_search_index ON node USING gin (name gin_trgm_ops, content gin_trgm_ops); diff --git a/sql/00013.sql b/sql/00013.sql deleted file mode 100644 index 5ba26b9..0000000 --- a/sql/00013.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE public.node ADD COLUMN markdown bool NOT NULL DEFAULT false; diff --git a/sql/00014.sql b/sql/00014.sql deleted file mode 100644 index 3a1123c..0000000 --- a/sql/00014.sql +++ /dev/null @@ -1,18 +0,0 @@ -CREATE TABLE checklist_group ( - id serial NOT NULL, - node_id int4 NOT NULL, - "order" int NOT NULL DEFAULT 0, - label varchar NOT NULL, - CONSTRAINT checklist_group_pk PRIMARY KEY (id), - CONSTRAINT checklist_group_node_fk FOREIGN KEY (node_id) REFERENCES public."node"(id) ON DELETE CASCADE ON UPDATE CASCADE -); - -CREATE TABLE checklist_item ( - id serial NOT NULL, - checklist_group_id int4 NOT NULL, - "order" int NOT NULL DEFAULT 0, - label varchar NOT NULL, - checked bool NOT NULL DEFAULT false, - CONSTRAINT checklist_item_pk PRIMARY KEY (id), - CONSTRAINT checklist_group_item_fk FOREIGN KEY (checklist_group_id) REFERENCES public."checklist_group"(id) ON DELETE CASCADE ON UPDATE CASCADE -) diff --git a/sql/00015.sql b/sql/00015.sql deleted file mode 100644 index c39cc4f..0000000 --- a/sql/00015.sql +++ /dev/null @@ -1,14 +0,0 @@ -CREATE TABLE public.schedule ( - id SERIAL NOT NULL, - user_id INT4 NOT NULL, - node_id INT4 NOT NULL, - schedule_uuid CHAR(36) DEFAULT GEN_RANDOM_UUID() NOT NULL, - "time" TIMESTAMP NOT NULL, - description VARCHAR DEFAULT '' NOT NULL, - acknowledged BOOL DEFAULT false NOT NULL, - - CONSTRAINT schedule_pk PRIMARY KEY (id), - CONSTRAINT schedule_uuid UNIQUE (schedule_uuid), - CONSTRAINT schedule_node_fk FOREIGN KEY (node_id) REFERENCES public.node(id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT schedule_user_fk FOREIGN KEY (user_id) REFERENCES "_webservice"."user"(id) ON DELETE CASCADE ON UPDATE CASCADE -); diff --git a/sql/00016.sql b/sql/00016.sql deleted file mode 100644 index 8a98bf1..0000000 --- a/sql/00016.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE public.schedule ADD CONSTRAINT schedule_event UNIQUE (user_id, node_id, "time", description); diff --git a/sql/00017.sql b/sql/00017.sql deleted file mode 100644 index 52009bf..0000000 --- a/sql/00017.sql +++ /dev/null @@ -1,11 +0,0 @@ -CREATE TABLE public.notification ( - id SERIAl NOT NULL, - user_id INT4 NOT NULL, - service VARCHAR DEFAULT 'NTFY' NOT NULL, - "configuration" JSONB DEFAULT '{}' NOT NULL, - prio INT DEFAULT 0 NOT NULL, - - CONSTRAINT notification_pk PRIMARY KEY (id), - CONSTRAINT notification_unique UNIQUE (user_id,prio), - CONSTRAINT notification_user_fk FOREIGN KEY (user_id) REFERENCES "_webservice"."user"(id) ON DELETE CASCADE ON UPDATE CASCADE -); diff --git a/sql/00018.sql b/sql/00018.sql deleted file mode 100644 index 261a5b8..0000000 --- a/sql/00018.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE public.schedule ALTER COLUMN "time" TYPE timestamptz USING "time"::timestamptz; - diff --git a/sql/00019.sql b/sql/00019.sql deleted file mode 100644 index 6b170a3..0000000 --- a/sql/00019.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE public.schedule ADD COLUMN remind_minutes int NOT NULL DEFAULT 0; diff --git a/sql/00002.sql b/sql/0002.sql similarity index 100% rename from sql/00002.sql rename to sql/0002.sql diff --git a/sql/00020.sql b/sql/00020.sql deleted file mode 100644 index bfe8680..0000000 --- a/sql/00020.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE _webservice."user" ADD timezone varchar DEFAULT 'UTC' NOT NULL; -ALTER TABLE public.schedule ALTER COLUMN "time" TYPE timestamp USING "time"::timestamp; diff --git a/sql/00021.sql b/sql/00021.sql deleted file mode 100644 index 88d7364..0000000 --- a/sql/00021.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE public.node ALTER COLUMN updated TYPE timestamptz USING updated::timestamptz; diff --git a/sql/00003.sql b/sql/0003.sql similarity index 100% rename from sql/00003.sql rename to sql/0003.sql diff --git a/sql/00004.sql b/sql/0004.sql similarity index 100% rename from sql/00004.sql rename to sql/0004.sql diff --git a/sql/00005.sql b/sql/0005.sql similarity index 100% rename from sql/00005.sql rename to sql/0005.sql diff --git a/sql/00006.sql b/sql/0006.sql similarity index 100% rename from sql/00006.sql rename to sql/0006.sql diff --git a/sql/00007.sql b/sql/0007.sql similarity index 100% rename from sql/00007.sql rename to sql/0007.sql diff --git a/sql/00008.sql b/sql/0008.sql similarity index 100% rename from sql/00008.sql rename to sql/0008.sql diff --git a/sql/00009.sql b/sql/0009.sql similarity index 100% rename from sql/00009.sql rename to sql/0009.sql diff --git a/sql/00010.sql b/sql/0010.sql similarity index 100% rename from sql/00010.sql rename to sql/0010.sql diff --git a/static/css/login.css b/static/css/login.css index cbe85cb..50a59ac 100644 --- a/static/css/login.css +++ b/static/css/login.css @@ -1,53 +1,33 @@ -/* -@theme_gradient: linear-gradient(to right, #009fff, #ec2f4b); -@theme_gradient: linear-gradient(to right, #f5af19, #f12711); -@theme_gradient: linear-gradient(to right, #fdc830, #f37335); -@theme_gradient: linear-gradient(to right, #8a2387, #e94057, #f27121); -@theme_gradient: linear-gradient(to right, #659999, #f4791f); -*/ #login { - height: 100%; - background: #eee; -} -#login .header { - background: linear-gradient(to right, #3e5151, #decba4); - width: 100%; - padding: 16px; - text-align: center; - color: #fff; -} -#login .header h1 { - margin-bottom: 0px; -} -#login .fields { display: grid; justify-items: center; - padding: 32px; + height: 100%; } -#login .fields input { +#login input { + max-width: 300px; margin-bottom: 32px; - border: 0px; - border: 1px solid #444; - padding: 8px; width: 100%; - font-size: 1.25em; + border: 0px; + border-bottom: 1px solid #444; + font-size: 18pt; background-color: #fff; } -#login .fields input:focus { +#login input:focus { outline: none; } -#login .fields button { +#login button { + max-width: 300px; border: 1px solid #666; background: #fff; color: #444; - padding: 12px 24px; - font-size: 1.25em; + padding: 16px 32px; + font-size: 1em; align-self: center; } -#login .fields button:hover { +#login button:hover { background: #ddd; } -#login .fields .auth-failed { +#login .auth-failed { margin-top: 32px; color: #a00; background: #fff; diff --git a/static/css/main.css b/static/css/main.css index 2617798..2ce59f2 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -1,10 +1,3 @@ -/* -@theme_gradient: linear-gradient(to right, #009fff, #ec2f4b); -@theme_gradient: linear-gradient(to right, #f5af19, #f12711); -@theme_gradient: linear-gradient(to right, #fdc830, #f37335); -@theme_gradient: linear-gradient(to right, #8a2387, #e94057, #f27121); -@theme_gradient: linear-gradient(to right, #659999, #f4791f); -*/ html { box-sizing: border-box; } @@ -13,17 +6,9 @@ html { *:after { box-sizing: inherit; } -*, -*:focus, -*:hover { - outline: none; -} [onClick] { cursor: pointer; } -label { - user-select: none; -} html, body { margin: 0px; @@ -34,16 +19,12 @@ body { height: 100%; } h1 { - font-size: 1.25em; - color: #518048; - border-bottom: 1px solid #ccc; + margin-top: 0px; + font-size: 1.5em; } h2 { - font-size: 1em; - color: #518048; -} -h3 { - font-size: 1em; + margin-top: 32px; + font-size: 1.25em; } button { font-size: 1em; @@ -67,13 +48,6 @@ button { border: 2px solid #000; box-shadow: 5px 5px 8px 0px rgba(0, 0, 0, 0.5); z-index: 1025; - width: min-content; -} -#menu .section { - padding: 16px 16px 0px 16px; - font-weight: bold; - white-space: nowrap; - color: #c84a37; } #menu .item { padding: 16px; @@ -153,18 +127,18 @@ button { #properties .key label { margin-left: 8px; } -#properties .checks { - display: grid; - grid-template-columns: min-content 1fr; - grid-gap: 4px 8px; -} header { display: grid; grid-area: header; - grid-template-columns: min-content 1fr repeat(6, min-content); + grid-template-columns: min-content 1fr repeat(3, min-content); align-items: center; padding: 8px 0px; color: #333c11; + background: linear-gradient(to right, #009fff, #ec2f4b); + background: linear-gradient(to right, #f5af19, #f12711); + background: linear-gradient(to right, #fdc830, #f37335); + background: linear-gradient(to right, #8a2387, #e94057, #f27121); + background: linear-gradient(to right, #659999, #f4791f); background: linear-gradient(to right, #3e5151, #decba4); color: #fff; } @@ -185,17 +159,17 @@ header .name { padding-left: 16px; font-size: 1.25em; } -header .markdown, -header .checklist, -header .search, -header .add, +header .add { + padding-right: 16px; + cursor: pointer; +} +header .add img { + cursor: pointer; + height: 24px; +} header .keys { padding-right: 16px; } -header .markdown img, -header .checklist img, -header .search img, -header .add img, header .keys img { cursor: pointer; height: 24px; @@ -212,7 +186,6 @@ header .menu { padding: 16px; background-color: #333; color: #ddd; - z-index: 100; } #tree .node { display: grid; @@ -227,7 +200,6 @@ header .menu { #tree .node .name { white-space: nowrap; cursor: pointer; - user-select: none; } #tree .node .name:hover { color: #ecbf00; @@ -302,11 +274,6 @@ header .menu { margin-bottom: 32px; font-size: 1.5em; } -#notes-version { - margin-top: 64px; - color: #888; - text-align: center; -} #node-content.encrypted { color: #a00; } @@ -326,174 +293,6 @@ header .menu { background: #f5f5f5; padding-top: 16px; } -#markdown { - color: #333; - grid-area: content; - justify-self: center; - width: calc(100% - 32px); - max-width: 900px; - padding: 0.5rem; - border-radius: 8px; - margin-top: 8px; - margin-bottom: 0px; -} -#markdown table { - border-collapse: collapse; -} -#markdown table th, -#markdown table td { - border: 1px solid #ddd; - padding: 4px 8px; -} -#markdown code { - background: #e6eeee; - padding: 4px; - border-radius: 4px; -} -#markdown pre { - background: #f5f5f5; - padding: 8px; - border-radius: 8px; -} -#markdown pre > code { - background: unset; - padding: 0px; - border-radius: 0px; -} -#checklist { - grid-area: checklist; - color: #333; - justify-self: center; - width: calc(100% - 32px); - max-width: 900px; - padding: 0.5rem; - border-radius: 8px; - margin-top: 8px; - margin-bottom: 0px; -} -#checklist .header { - display: grid; - grid-template-columns: repeat(3, min-content); - align-items: center; - grid-gap: 0 16px; -} -#checklist .header img { - height: 20px; - cursor: pointer; -} -#checklist .header + .checklist-group.edit { - margin-top: 16px; -} -#checklist .checklist-group { - display: grid; - grid-template-columns: repeat(4, min-content); - align-items: center; - grid-gap: 0 8px; - margin-top: 1em; - margin-bottom: 8px; - font-weight: bold; -} -#checklist .checklist-group .label { - white-space: nowrap; -} -#checklist .checklist-group .label.ok { - color: #54b356; -} -#checklist .checklist-group .label.error { - color: #d13636; -} -#checklist .checklist-group.edit { - margin-top: 32px; - border-bottom: 1px solid #aaa; - padding-bottom: 8px; -} -#checklist .checklist-group:not(.edit) .reorder { - display: none; -} -#checklist .checklist-group:not(.edit) img { - display: none; -} -#checklist .checklist-group img { - height: 14px; - cursor: pointer; -} -#checklist .checklist-item { - transform: translate(0, 0); - display: grid; - grid-template-columns: repeat(3, min-content); - grid-gap: 0 8px; - align-items: center; - padding: 4px 0; - border-bottom: 2px solid #fff; -} -#checklist .checklist-item.checked { - text-decoration: line-through; - color: #aaa; -} -#checklist .checklist-item.drag-target { - border-bottom: 2px solid #71c837; -} -#checklist .checklist-item input[type="checkbox"] { - -webkit-appearance: none; - appearance: none; - background-color: #fff; - margin: 0 2px 0 0; - font: inherit; - color: currentColor; - width: 1.25em; - height: 1.25em; - border: 0.15em solid currentColor; - border-radius: 0.15em; - transform: translateY(-0.075em); - display: grid; - place-content: center; -} -#checklist .checklist-item label.ok { - color: #54b356; -} -#checklist .checklist-item label.error { - color: #d13636; -} -#checklist .checklist-item input[type="checkbox"].ok { - border: 0.15em solid #54b356; -} -#checklist .checklist-item input[type="checkbox"].ok::before { - box-shadow: inset 1em 1em #54b356; -} -#checklist .checklist-item input[type="checkbox"].error { - border: 0.15em solid #d13636; -} -#checklist .checklist-item input[type="checkbox"].error::before { - box-shadow: inset 1em 1em #d13636; -} -#checklist .checklist-item input[type="checkbox"]::before { - content: ""; - width: 0.7em; - height: 0.7em; - transform: scale(0); - transition: 120ms transform ease-in-out; - box-shadow: inset 1em 1em #666; -} -#checklist .checklist-item input[type="checkbox"]:checked::before { - transform: scale(1); -} -#checklist .checklist-item.edit input[type="checkbox"] { - margin-left: 8px; -} -#checklist .checklist-item:not(.edit) .reorder { - display: none; -} -#checklist .checklist-item:not(.edit) img { - display: none; -} -#checklist .checklist-item img { - height: 14px; - cursor: pointer; -} -#checklist .checklist-item label { - user-select: none; - white-space: nowrap; -} /* ============================================================= * * Textarea replicates the height of an element expanding height * * ============================================================= */ @@ -532,7 +331,7 @@ header .menu { grid-area: 1 / 1 / 2 / 2; } /* ============================================================= */ -#schedule-section { +#file-section { grid-area: files; justify-self: center; width: calc(100% - 32px); @@ -542,23 +341,6 @@ header .menu { border-radius: 8px; margin-top: 32px; margin-bottom: 32px; - color: #000; -} -#schedule-section .header { - font-weight: bold; - color: #000; - margin-bottom: 16px; -} -#file-section { - grid-area: schedule; - justify-self: center; - width: calc(100% - 32px); - max-width: 900px; - padding: 32px; - background: #f5f5f5; - border-radius: 8px; - margin-top: 32px; - margin-bottom: 16px; } #file-section .header { font-weight: bold; @@ -657,12 +439,12 @@ header .menu { } .layout-tree { display: grid; - grid-template-areas: "header header" "tree crumbs" "tree child-nodes" "tree name" "tree content" "tree checklist" "tree schedule" "tree files" "tree blank"; + grid-template-areas: "header header" "tree crumbs" "tree child-nodes" "tree name" "tree content" "tree files" "tree blank"; grid-template-columns: min-content 1fr; - grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* checklist */ min-content /* schedule */ min-content /* files */ 1fr; + grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* files */ 1fr; /* blank */ color: #fff; - min-height: 100%; + height: 100%; } .layout-tree-only { display: grid; @@ -671,7 +453,7 @@ header .menu { grid-template-rows: min-content /* header */ 1fr; /* blank */ color: #fff; - min-height: 100%; + height: 100%; } .layout-tree-only #crumbs { display: none; @@ -692,17 +474,14 @@ header .menu { display: block; } .layout-crumbs { - grid-template-areas: "header" "crumbs" "child-nodes" "name" "content" "checklist" "schedule" "files" "blank"; + grid-template-areas: "header" "crumbs" "child-nodes" "name" "content" "files" "blank"; grid-template-columns: 1fr; - grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* checklist */ min-content /* schedule */ min-content /* files */ 1fr; + grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* files */ 1fr; /* blank */ } .layout-crumbs #tree { display: none; } -.layout-crumbs #checklist { - padding: 16px; -} .layout-keys { display: grid; grid-template-areas: "header" "keys"; @@ -733,145 +512,59 @@ header .menu { .layout-keys #keys { display: block; } -#app.login { - padding-top: 64px; +#app { display: grid; - grid-template-columns: minmax(min-content, 300px); - justify-content: center; -} -#app.node { - display: grid; - grid-template-areas: "header header" "tree crumbs" "tree child-nodes" "tree name" "tree content" "tree checklist" "tree schedule" "tree files" "tree blank"; + grid-template-areas: "header header" "tree crumbs" "tree child-nodes" "tree name" "tree content" "tree files" "tree blank"; grid-template-columns: min-content 1fr; - grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* checklist */ min-content /* schedule */ min-content /* files */ 1fr; + grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* files */ 1fr; /* blank */ color: #fff; - min-height: 100%; + height: 100%; } -#app.node.toggle-tree { - grid-template-areas: "header" "crumbs" "child-nodes" "name" "content" "checklist" "schedule" "files" "blank"; +#app.toggle-tree { + grid-template-areas: "header" "crumbs" "child-nodes" "name" "content" "files" "blank"; grid-template-columns: 1fr; - grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* checklist */ min-content /* schedule */ min-content /* files */ 1fr; + grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* files */ 1fr; /* blank */ } -#app.node.toggle-tree #tree { +#app.toggle-tree #tree { display: none; } -#app.node.toggle-tree #checklist { - padding: 16px; -} -#profile-settings { - color: #333; - padding: 16px; -} -#profile-settings .passwords { - display: grid; - grid-template-columns: min-content 200px; - grid-gap: 8px 16px; - margin-bottom: 16px; -} -#profile-settings .passwords div { - white-space: nowrap; -} -#schedule-events { - display: grid; - grid-template-columns: repeat(5, min-content); - grid-gap: 4px 12px; - margin: 32px; - color: #000; - white-space: nowrap; -} -#schedule-events .header { - font-weight: bold; -} -#input-text { - border: 1px solid #000 !important; - padding: 16px; - width: 300px; -} -#input-text .label { - margin-bottom: 4px; -} -#input-text input[type=text] { - width: 100%; - padding: 4px; -} -#input-text .buttons { - display: grid; - grid-template-columns: 1fr 64px 64px; - grid-gap: 8px; - margin-top: 8px; -} -#fullcalendar { - margin: 32px; - color: #444; -} -.folder .tabs { - border-left: 1px solid #888; - display: flex; -} -.folder .tabs .tab { - padding: 16px 32px; - border-top: 1px solid #888; - border-bottom: 1px solid #888; - border-right: 1px solid #888; - color: #444; - background: #eee; - cursor: pointer; -} -.folder .tabs .tab.selected { - border-bottom: none; - background: #fff; -} -.folder .tabs .hack { - border-bottom: 1px solid #888; - width: 100%; -} -.folder .content { - padding-top: 1px; - border-left: 1px solid #888; - border-right: 1px solid #888; - border-bottom: 1px solid #888; - padding-bottom: 1px; -} @media only screen and (max-width: 932px) { - #app.node { - grid-template-areas: "header" "crumbs" "child-nodes" "name" "content" "checklist" "schedule" "files" "blank"; + #app { + grid-template-areas: "header" "crumbs" "child-nodes" "name" "content" "files" "blank"; grid-template-columns: 1fr; - grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* checklist */ min-content /* schedule */ min-content /* files */ 1fr; + grid-template-rows: min-content /* header */ min-content /* crumbs */ min-content /* child-nodes */ min-content /* name */ min-content /* content */ min-content /* files */ 1fr; /* blank */ } - #app.node #tree { + #app #tree { display: none; } - #app.node #checklist { - padding: 16px; - } - #app.node.toggle-tree { + #app.toggle-tree { display: grid; grid-template-areas: "header" "tree"; grid-template-columns: 1fr; grid-template-rows: min-content /* header */ 1fr; /* blank */ color: #fff; - min-height: 100%; + height: 100%; } - #app.node.toggle-tree #crumbs { + #app.toggle-tree #crumbs { display: none; } - #app.node.toggle-tree .child-nodes { + #app.toggle-tree .child-nodes { display: none; } - #app.node.toggle-tree .node-name { + #app.toggle-tree .node-name { display: none; } - #app.node.toggle-tree .grow-wrap { + #app.toggle-tree .grow-wrap { display: none; } - #app.node.toggle-tree #file-section { + #app.toggle-tree #file-section { display: none; } - #app.node.toggle-tree #tree { + #app.toggle-tree #tree { display: block; } .node-content { @@ -879,9 +572,7 @@ header .menu { padding: 16px; justify-self: start; } - #file-section, - #checklist, - #markdown { + #file-section { width: calc(100% - 32px); padding: 16px; margin-left: 16px; diff --git a/static/css/search.css b/static/css/search.css deleted file mode 100644 index ddec298..0000000 --- a/static/css/search.css +++ /dev/null @@ -1,29 +0,0 @@ -/* -@theme_gradient: linear-gradient(to right, #009fff, #ec2f4b); -@theme_gradient: linear-gradient(to right, #f5af19, #f12711); -@theme_gradient: linear-gradient(to right, #fdc830, #f37335); -@theme_gradient: linear-gradient(to right, #8a2387, #e94057, #f27121); -@theme_gradient: linear-gradient(to right, #659999, #f4791f); -*/ -#search { - padding: 16px; - color: #333; -} -#search h2 { - margin-bottom: 8px; -} -#search input[type=text] { - font-size: 1em; -} -#search button { - display: block; - margin-top: 8px; -} -#search .matches .matched-node { - cursor: pointer; - margin-top: 6px; -} -#search .matches .matched-node:before { - content: "•"; - margin-right: 6px; -} diff --git a/static/css/theme.css b/static/css/theme.css index 39ea0b1..e69de29 100644 --- a/static/css/theme.css +++ b/static/css/theme.css @@ -1,7 +0,0 @@ -/* -@theme_gradient: linear-gradient(to right, #009fff, #ec2f4b); -@theme_gradient: linear-gradient(to right, #f5af19, #f12711); -@theme_gradient: linear-gradient(to right, #fdc830, #f37335); -@theme_gradient: linear-gradient(to right, #8a2387, #e94057, #f27121); -@theme_gradient: linear-gradient(to right, #659999, #f4791f); -*/ diff --git a/static/images/add-gray.svg b/static/images/add-gray.svg deleted file mode 100644 index b876269..0000000 --- a/static/images/add-gray.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - diff --git a/static/images/checklist-off.svg b/static/images/checklist-off.svg deleted file mode 100644 index bea3071..0000000 --- a/static/images/checklist-off.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - diff --git a/static/images/checklist-on.svg b/static/images/checklist-on.svg deleted file mode 100644 index 3bd1daa..0000000 --- a/static/images/checklist-on.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - diff --git a/static/images/edit-list-gray.svg b/static/images/edit-list-gray.svg deleted file mode 100644 index 8289ef3..0000000 --- a/static/images/edit-list-gray.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - diff --git a/static/images/edit-list.svg b/static/images/edit-list.svg deleted file mode 100644 index 3b28876..0000000 --- a/static/images/edit-list.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - diff --git a/static/images/edit.svg b/static/images/edit.svg deleted file mode 100644 index 81014fe..0000000 --- a/static/images/edit.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - diff --git a/static/images/markdown-hollow.svg b/static/images/markdown-hollow.svg deleted file mode 100644 index bd2e424..0000000 --- a/static/images/markdown-hollow.svg +++ /dev/null @@ -1,49 +0,0 @@ - - diff --git a/static/images/markdown.svg b/static/images/markdown.svg deleted file mode 100644 index f3ef1c1..0000000 --- a/static/images/markdown.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - diff --git a/static/images/search.svg b/static/images/search.svg deleted file mode 100644 index 28b3b5f..0000000 --- a/static/images/search.svg +++ /dev/null @@ -1,107 +0,0 @@ - - - - diff --git a/static/images/trashcan.svg b/static/images/trashcan.svg deleted file mode 100644 index 120cda9..0000000 --- a/static/images/trashcan.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - diff --git a/static/index.html b/static/index.html index 5ed40a5..979ac37 100644 --- a/static/index.html +++ b/static/index.html @@ -5,7 +5,6 @@ - - - +
diff --git a/static/js/app.mjs b/static/js/app.mjs index ff2e7b8..02cb7a7 100644 --- a/static/js/app.mjs +++ b/static/js/app.mjs @@ -1,17 +1,20 @@ -import 'preact/debug' import 'preact/devtools' - +import { signal } from 'preact/signals' import { h, Component, render, createRef } from 'preact' import htm from 'htm' import { Session } from 'session' import { Node, NodeUI } from 'node' -import { Websocket } from 'ws' -import { signal } from 'preact/signals' const html = htm.bind(h) class App extends Component { constructor() {//{{{ super() + this.websocket_uri = `ws://localhost:1371/ws` + this.websocket = null + this.websocket_int_ping = null + this.websocket_int_reconnect = null + this.wsConnect() + this.wsLoop() this.session = new Session(this) this.session.initialize() @@ -22,106 +25,117 @@ class App extends Component { this.startNode = null - this.websocketInit() this.setStartNode() }//}}} render() {//{{{ - let app_el = document.getElementById('app') - - if (!this.session.initialized) { - return + if(!this.session.initialized) { + return html`hello world
-``` - -```bash -# Print all options -$ marked --help -``` - -**Browser** - -```html - - - - -'
- + (escaped ? code : escape$1(code, true))
- + '\n';
- }
- return ''
- + (escaped ? code : escape$1(code, true))
- + '\n';
- }
- blockquote(quote) {
- return `\n${quote}\n`; - } - html(html, block) { - return html; - } - heading(text, level, raw) { - // ignore IDs - return `
${text}
\n`; - } - table(header, body) { - if (body) - body = `${body}`; - return '${text}`;
- }
- br() {
- return 'An error occurred:
' - + escape$1(e.message + '', true) - + ''; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e); - } - throw e; - }; - } -} - -const markedInstance = new Marked(); -function marked(src, opt) { - return markedInstance.parse(src, opt); -} -/** - * Sets the default options. - * - * @param options Hash of options - */ -marked.options = - marked.setOptions = function (options) { - markedInstance.setOptions(options); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; -/** - * Gets the original marked default options. - */ -marked.getDefaults = _getDefaults; -marked.defaults = exports.defaults; -/** - * Use Extension - */ -marked.use = function (...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; -}; -/** - * Run callback for every token - */ -marked.walkTokens = function (tokens, callback) { - return markedInstance.walkTokens(tokens, callback); -}; -/** - * Compiles markdown to HTML without enclosing `p` tag. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @return String of compiled HTML - */ -marked.parseInline = markedInstance.parseInline; -/** - * Expose - */ -marked.Parser = _Parser; -marked.parser = _Parser.parse; -marked.Renderer = _Renderer; -marked.TextRenderer = _TextRenderer; -marked.Lexer = _Lexer; -marked.lexer = _Lexer.lex; -marked.Tokenizer = _Tokenizer; -marked.Hooks = _Hooks; -marked.parse = marked; -const options = marked.options; -const setOptions = marked.setOptions; -const use = marked.use; -const walkTokens = marked.walkTokens; -const parseInline = marked.parseInline; -const parse = marked; -const parser = _Parser.parse; -const lexer = _Lexer.lex; - -exports.Hooks = _Hooks; -exports.Lexer = _Lexer; -exports.Marked = Marked; -exports.Parser = _Parser; -exports.Renderer = _Renderer; -exports.TextRenderer = _TextRenderer; -exports.Tokenizer = _Tokenizer; -exports.getDefaults = _getDefaults; -exports.lexer = lexer; -exports.marked = marked; -exports.options = options; -exports.parse = parse; -exports.parseInline = parseInline; -exports.parser = parser; -exports.setOptions = setOptions; -exports.use = use; -exports.walkTokens = walkTokens; -//# sourceMappingURL=marked.cjs.map diff --git a/static/js/lib/node_modules/marked/lib/marked.cjs.map b/static/js/lib/node_modules/marked/lib/marked.cjs.map deleted file mode 100644 index e267552..0000000 --- a/static/js/lib/node_modules/marked/lib/marked.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"marked.cjs","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nconst _comment = /|$)/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|
'\n + (escaped ? code : escape(code, true))\n + '\\n';\n }\n return ''\n + (escaped ? code : escape(code, true))\n + '\\n';\n }\n blockquote(quote) {\n return `\\n${quote}\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `
${text}
\\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '${text}`;\n }\n br() {\n return 'An error occurred:
'\n + escape(e.message + '', true)\n + '';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["_defaults","escape"],"mappings":"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"} \ No newline at end of file diff --git a/static/js/lib/node_modules/marked/lib/marked.d.cts b/static/js/lib/node_modules/marked/lib/marked.d.cts deleted file mode 100644 index ee3ce63..0000000 --- a/static/js/lib/node_modules/marked/lib/marked.d.cts +++ /dev/null @@ -1,638 +0,0 @@ -// Generated by dts-bundle-generator v9.0.0 - -export type Token = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del | Tokens.Generic); -export declare namespace Tokens { - interface Space { - type: "space"; - raw: string; - } - interface Code { - type: "code"; - raw: string; - codeBlockStyle?: "indented" | undefined; - lang?: string | undefined; - text: string; - escaped?: boolean; - } - interface Heading { - type: "heading"; - raw: string; - depth: number; - text: string; - tokens: Token[]; - } - interface Table { - type: "table"; - raw: string; - align: Array<"center" | "left" | "right" | null>; - header: TableCell[]; - rows: TableCell[][]; - } - interface TableCell { - text: string; - tokens: Token[]; - } - interface Hr { - type: "hr"; - raw: string; - } - interface Blockquote { - type: "blockquote"; - raw: string; - text: string; - tokens: Token[]; - } - interface List { - type: "list"; - raw: string; - ordered: boolean; - start: number | ""; - loose: boolean; - items: ListItem[]; - } - interface ListItem { - type: "list_item"; - raw: string; - task: boolean; - checked?: boolean | undefined; - loose: boolean; - text: string; - tokens: Token[]; - } - interface Paragraph { - type: "paragraph"; - raw: string; - pre?: boolean | undefined; - text: string; - tokens: Token[]; - } - interface HTML { - type: "html"; - raw: string; - pre: boolean; - text: string; - block: boolean; - } - interface Text { - type: "text"; - raw: string; - text: string; - tokens?: Token[]; - } - interface Def { - type: "def"; - raw: string; - tag: string; - href: string; - title: string; - } - interface Escape { - type: "escape"; - raw: string; - text: string; - } - interface Tag { - type: "text" | "html"; - raw: string; - inLink: boolean; - inRawBlock: boolean; - text: string; - block: boolean; - } - interface Link { - type: "link"; - raw: string; - href: string; - title?: string | null; - text: string; - tokens: Token[]; - } - interface Image { - type: "image"; - raw: string; - href: string; - title: string | null; - text: string; - } - interface Strong { - type: "strong"; - raw: string; - text: string; - tokens: Token[]; - } - interface Em { - type: "em"; - raw: string; - text: string; - tokens: Token[]; - } - interface Codespan { - type: "codespan"; - raw: string; - text: string; - } - interface Br { - type: "br"; - raw: string; - } - interface Del { - type: "del"; - raw: string; - text: string; - tokens: Token[]; - } - interface Generic { - [index: string]: any; - type: string; - raw: string; - tokens?: Token[] | undefined; - } -} -export type Links = Record
'
- + (escaped ? code : escape$1(code, true))
- + '\n';
- }
- return ''
- + (escaped ? code : escape$1(code, true))
- + '\n';
- }
- blockquote(quote) {
- return `\n${quote}\n`; - } - html(html, block) { - return html; - } - heading(text, level, raw) { - // ignore IDs - return `
${text}
\n`; - } - table(header, body) { - if (body) - body = `${body}`; - return '${text}`;
- }
- br() {
- return 'An error occurred:
' - + escape$1(e.message + '', true) - + ''; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e); - } - throw e; - }; - } -} - -const markedInstance = new Marked(); -function marked(src, opt) { - return markedInstance.parse(src, opt); -} -/** - * Sets the default options. - * - * @param options Hash of options - */ -marked.options = - marked.setOptions = function (options) { - markedInstance.setOptions(options); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; -/** - * Gets the original marked default options. - */ -marked.getDefaults = _getDefaults; -marked.defaults = _defaults; -/** - * Use Extension - */ -marked.use = function (...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; -}; -/** - * Run callback for every token - */ -marked.walkTokens = function (tokens, callback) { - return markedInstance.walkTokens(tokens, callback); -}; -/** - * Compiles markdown to HTML without enclosing `p` tag. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @return String of compiled HTML - */ -marked.parseInline = markedInstance.parseInline; -/** - * Expose - */ -marked.Parser = _Parser; -marked.parser = _Parser.parse; -marked.Renderer = _Renderer; -marked.TextRenderer = _TextRenderer; -marked.Lexer = _Lexer; -marked.lexer = _Lexer.lex; -marked.Tokenizer = _Tokenizer; -marked.Hooks = _Hooks; -marked.parse = marked; -const options = marked.options; -const setOptions = marked.setOptions; -const use = marked.use; -const walkTokens = marked.walkTokens; -const parseInline = marked.parseInline; -const parse = marked; -const parser = _Parser.parse; -const lexer = _Lexer.lex; - -export { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens }; -//# sourceMappingURL=marked.esm.js.map diff --git a/static/js/lib/node_modules/marked/lib/marked.esm.js.map b/static/js/lib/node_modules/marked/lib/marked.esm.js.map deleted file mode 100644 index b2f2e32..0000000 --- a/static/js/lib/node_modules/marked/lib/marked.esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"marked.esm.js","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nconst _comment = /|$)/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|
'\n + (escaped ? code : escape(code, true))\n + '\\n';\n }\n return ''\n + (escaped ? code : escape(code, true))\n + '\\n';\n }\n blockquote(quote) {\n return `\\n${quote}\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `
${text}
\\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '${text}`;\n }\n br() {\n return 'An error occurred:
'\n + escape(e.message + '', true)\n + '';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["escape"],"mappings":"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"} \ No newline at end of file diff --git a/static/js/lib/node_modules/marked/lib/marked.umd.js b/static/js/lib/node_modules/marked/lib/marked.umd.js deleted file mode 100644 index c5a5377..0000000 --- a/static/js/lib/node_modules/marked/lib/marked.umd.js +++ /dev/null @@ -1,2448 +0,0 @@ -/** - * marked v11.1.1 - a markdown parser - * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ - -/** - * DO NOT EDIT THIS FILE - * The code in this file is generated from files in ./src/ - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {})); -})(this, (function (exports) { 'use strict'; - - /** - * Gets the original marked default options. - */ - function _getDefaults() { - return { - async: false, - breaks: false, - extensions: null, - gfm: true, - hooks: null, - pedantic: false, - renderer: null, - silent: false, - tokenizer: null, - walkTokens: null - }; - } - exports.defaults = _getDefaults(); - function changeDefaults(newDefaults) { - exports.defaults = newDefaults; - } - - /** - * Helpers - */ - const escapeTest = /[&<>"']/; - const escapeReplace = new RegExp(escapeTest.source, 'g'); - const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; - const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); - const escapeReplacements = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - const getEscapeReplacement = (ch) => escapeReplacements[ch]; - function escape$1(html, encode) { - if (encode) { - if (escapeTest.test(html)) { - return html.replace(escapeReplace, getEscapeReplacement); - } - } - else { - if (escapeTestNoEncode.test(html)) { - return html.replace(escapeReplaceNoEncode, getEscapeReplacement); - } - } - return html; - } - const unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig; - function unescape(html) { - // explicitly match decimal, hex, and named HTML entities - return html.replace(unescapeTest, (_, n) => { - n = n.toLowerCase(); - if (n === 'colon') - return ':'; - if (n.charAt(0) === '#') { - return n.charAt(1) === 'x' - ? String.fromCharCode(parseInt(n.substring(2), 16)) - : String.fromCharCode(+n.substring(1)); - } - return ''; - }); - } - const caret = /(^|[^\[])\^/g; - function edit(regex, opt) { - let source = typeof regex === 'string' ? regex : regex.source; - opt = opt || ''; - const obj = { - replace: (name, val) => { - let valSource = typeof val === 'string' ? val : val.source; - valSource = valSource.replace(caret, '$1'); - source = source.replace(name, valSource); - return obj; - }, - getRegex: () => { - return new RegExp(source, opt); - } - }; - return obj; - } - function cleanUrl(href) { - try { - href = encodeURI(href).replace(/%25/g, '%'); - } - catch (e) { - return null; - } - return href; - } - const noopTest = { exec: () => null }; - function splitCells(tableRow, count) { - // ensure that every cell-delimiting pipe has a space - // before it to distinguish it from an escaped pipe - const row = tableRow.replace(/\|/g, (match, offset, str) => { - let escaped = false; - let curr = offset; - while (--curr >= 0 && str[curr] === '\\') - escaped = !escaped; - if (escaped) { - // odd number of slashes means | is escaped - // so we leave it alone - return '|'; - } - else { - // add space before unescaped | - return ' |'; - } - }), cells = row.split(/ \|/); - let i = 0; - // First/last cell in a row cannot be empty if it has no leading/trailing pipe - if (!cells[0].trim()) { - cells.shift(); - } - if (cells.length > 0 && !cells[cells.length - 1].trim()) { - cells.pop(); - } - if (count) { - if (cells.length > count) { - cells.splice(count); - } - else { - while (cells.length < count) - cells.push(''); - } - } - for (; i < cells.length; i++) { - // leading or trailing whitespace is ignored per the gfm spec - cells[i] = cells[i].trim().replace(/\\\|/g, '|'); - } - return cells; - } - /** - * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). - * /c*$/ is vulnerable to REDOS. - * - * @param str - * @param c - * @param invert Remove suffix of non-c chars instead. Default falsey. - */ - function rtrim(str, c, invert) { - const l = str.length; - if (l === 0) { - return ''; - } - // Length of suffix matching the invert condition. - let suffLen = 0; - // Step left until we fail to match the invert condition. - while (suffLen < l) { - const currChar = str.charAt(l - suffLen - 1); - if (currChar === c && !invert) { - suffLen++; - } - else if (currChar !== c && invert) { - suffLen++; - } - else { - break; - } - } - return str.slice(0, l - suffLen); - } - function findClosingBracket(str, b) { - if (str.indexOf(b[1]) === -1) { - return -1; - } - let level = 0; - for (let i = 0; i < str.length; i++) { - if (str[i] === '\\') { - i++; - } - else if (str[i] === b[0]) { - level++; - } - else if (str[i] === b[1]) { - level--; - if (level < 0) { - return i; - } - } - } - return -1; - } - - function outputLink(cap, link, raw, lexer) { - const href = link.href; - const title = link.title ? escape$1(link.title) : null; - const text = cap[1].replace(/\\([\[\]])/g, '$1'); - if (cap[0].charAt(0) !== '!') { - lexer.state.inLink = true; - const token = { - type: 'link', - raw, - href, - title, - text, - tokens: lexer.inlineTokens(text) - }; - lexer.state.inLink = false; - return token; - } - return { - type: 'image', - raw, - href, - title, - text: escape$1(text) - }; - } - function indentCodeCompensation(raw, text) { - const matchIndentToCode = raw.match(/^(\s+)(?:```)/); - if (matchIndentToCode === null) { - return text; - } - const indentToCode = matchIndentToCode[1]; - return text - .split('\n') - .map(node => { - const matchIndentInNode = node.match(/^\s+/); - if (matchIndentInNode === null) { - return node; - } - const [indentInNode] = matchIndentInNode; - if (indentInNode.length >= indentToCode.length) { - return node.slice(indentToCode.length); - } - return node; - }) - .join('\n'); - } - /** - * Tokenizer - */ - class _Tokenizer { - options; - rules; // set by the lexer - lexer; // set by the lexer - constructor(options) { - this.options = options || exports.defaults; - } - space(src) { - const cap = this.rules.block.newline.exec(src); - if (cap && cap[0].length > 0) { - return { - type: 'space', - raw: cap[0] - }; - } - } - code(src) { - const cap = this.rules.block.code.exec(src); - if (cap) { - const text = cap[0].replace(/^ {1,4}/gm, ''); - return { - type: 'code', - raw: cap[0], - codeBlockStyle: 'indented', - text: !this.options.pedantic - ? rtrim(text, '\n') - : text - }; - } - } - fences(src) { - const cap = this.rules.block.fences.exec(src); - if (cap) { - const raw = cap[0]; - const text = indentCodeCompensation(raw, cap[3] || ''); - return { - type: 'code', - raw, - lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], - text - }; - } - } - heading(src) { - const cap = this.rules.block.heading.exec(src); - if (cap) { - let text = cap[2].trim(); - // remove trailing #s - if (/#$/.test(text)) { - const trimmed = rtrim(text, '#'); - if (this.options.pedantic) { - text = trimmed.trim(); - } - else if (!trimmed || / $/.test(trimmed)) { - // CommonMark requires space before trailing #s - text = trimmed.trim(); - } - } - return { - type: 'heading', - raw: cap[0], - depth: cap[1].length, - text, - tokens: this.lexer.inline(text) - }; - } - } - hr(src) { - const cap = this.rules.block.hr.exec(src); - if (cap) { - return { - type: 'hr', - raw: cap[0] - }; - } - } - blockquote(src) { - const cap = this.rules.block.blockquote.exec(src); - if (cap) { - const text = rtrim(cap[0].replace(/^ *>[ \t]?/gm, ''), '\n'); - const top = this.lexer.state.top; - this.lexer.state.top = true; - const tokens = this.lexer.blockTokens(text); - this.lexer.state.top = top; - return { - type: 'blockquote', - raw: cap[0], - tokens, - text - }; - } - } - list(src) { - let cap = this.rules.block.list.exec(src); - if (cap) { - let bull = cap[1].trim(); - const isordered = bull.length > 1; - const list = { - type: 'list', - raw: '', - ordered: isordered, - start: isordered ? +bull.slice(0, -1) : '', - loose: false, - items: [] - }; - bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; - if (this.options.pedantic) { - bull = isordered ? bull : '[*+-]'; - } - // Get next list item - const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); - let raw = ''; - let itemContents = ''; - let endsWithBlankLine = false; - // Check if current bullet point can start a new List Item - while (src) { - let endEarly = false; - if (!(cap = itemRegex.exec(src))) { - break; - } - if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) - break; - } - raw = cap[0]; - src = src.substring(raw.length); - let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); - let nextLine = src.split('\n', 1)[0]; - let indent = 0; - if (this.options.pedantic) { - indent = 2; - itemContents = line.trimStart(); - } - else { - indent = cap[2].search(/[^ ]/); // Find first non-space char - indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent - itemContents = line.slice(indent); - indent += cap[1].length; - } - let blankLine = false; - if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line - raw += nextLine + '\n'; - src = src.substring(nextLine.length + 1); - endEarly = true; - } - if (!endEarly) { - const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); - const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); - const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); - const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); - // Check if following lines should be included in List Item - while (src) { - const rawLine = src.split('\n', 1)[0]; - nextLine = rawLine; - // Re-align to follow commonmark nesting rules - if (this.options.pedantic) { - nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); - } - // End list item if found code fences - if (fencesBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new heading - if (headingBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new bullet - if (nextBulletRegex.test(nextLine)) { - break; - } - // Horizontal rule found - if (hrRegex.test(src)) { - break; - } - if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible - itemContents += '\n' + nextLine.slice(indent); - } - else { - // not enough indentation - if (blankLine) { - break; - } - // paragraph continuation unless last line was a different block level element - if (line.search(/[^ ]/) >= 4) { // indented code block - break; - } - if (fencesBeginRegex.test(line)) { - break; - } - if (headingBeginRegex.test(line)) { - break; - } - if (hrRegex.test(line)) { - break; - } - itemContents += '\n' + nextLine; - } - if (!blankLine && !nextLine.trim()) { // Check if current line is blank - blankLine = true; - } - raw += rawLine + '\n'; - src = src.substring(rawLine.length + 1); - line = nextLine.slice(indent); - } - } - if (!list.loose) { - // If the previous item ended with a blank line, the list is loose - if (endsWithBlankLine) { - list.loose = true; - } - else if (/\n *\n *$/.test(raw)) { - endsWithBlankLine = true; - } - } - let istask = null; - let ischecked; - // Check for task list items - if (this.options.gfm) { - istask = /^\[[ xX]\] /.exec(itemContents); - if (istask) { - ischecked = istask[0] !== '[ ] '; - itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); - } - } - list.items.push({ - type: 'list_item', - raw, - task: !!istask, - checked: ischecked, - loose: false, - text: itemContents, - tokens: [] - }); - list.raw += raw; - } - // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic - list.items[list.items.length - 1].raw = raw.trimEnd(); - (list.items[list.items.length - 1]).text = itemContents.trimEnd(); - list.raw = list.raw.trimEnd(); - // Item child tokens handled here at end because we needed to have the final item to trim it first - for (let i = 0; i < list.items.length; i++) { - this.lexer.state.top = false; - list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); - if (!list.loose) { - // Check if list should be loose - const spacers = list.items[i].tokens.filter(t => t.type === 'space'); - const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); - list.loose = hasMultipleLineBreaks; - } - } - // Set all items to loose if list is loose - if (list.loose) { - for (let i = 0; i < list.items.length; i++) { - list.items[i].loose = true; - } - } - return list; - } - } - html(src) { - const cap = this.rules.block.html.exec(src); - if (cap) { - const token = { - type: 'html', - block: true, - raw: cap[0], - pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', - text: cap[0] - }; - return token; - } - } - def(src) { - const cap = this.rules.block.def.exec(src); - if (cap) { - const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); - const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; - const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; - return { - type: 'def', - tag, - raw: cap[0], - href, - title - }; - } - } - table(src) { - const cap = this.rules.block.table.exec(src); - if (!cap) { - return; - } - if (!/[:|]/.test(cap[2])) { - // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading - return; - } - const headers = splitCells(cap[1]); - const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); - const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; - const item = { - type: 'table', - raw: cap[0], - header: [], - align: [], - rows: [] - }; - if (headers.length !== aligns.length) { - // header and align columns must be equal, rows can be different. - return; - } - for (const align of aligns) { - if (/^ *-+: *$/.test(align)) { - item.align.push('right'); - } - else if (/^ *:-+: *$/.test(align)) { - item.align.push('center'); - } - else if (/^ *:-+ *$/.test(align)) { - item.align.push('left'); - } - else { - item.align.push(null); - } - } - for (const header of headers) { - item.header.push({ - text: header, - tokens: this.lexer.inline(header) - }); - } - for (const row of rows) { - item.rows.push(splitCells(row, item.header.length).map(cell => { - return { - text: cell, - tokens: this.lexer.inline(cell) - }; - })); - } - return item; - } - lheading(src) { - const cap = this.rules.block.lheading.exec(src); - if (cap) { - return { - type: 'heading', - raw: cap[0], - depth: cap[2].charAt(0) === '=' ? 1 : 2, - text: cap[1], - tokens: this.lexer.inline(cap[1]) - }; - } - } - paragraph(src) { - const cap = this.rules.block.paragraph.exec(src); - if (cap) { - const text = cap[1].charAt(cap[1].length - 1) === '\n' - ? cap[1].slice(0, -1) - : cap[1]; - return { - type: 'paragraph', - raw: cap[0], - text, - tokens: this.lexer.inline(text) - }; - } - } - text(src) { - const cap = this.rules.block.text.exec(src); - if (cap) { - return { - type: 'text', - raw: cap[0], - text: cap[0], - tokens: this.lexer.inline(cap[0]) - }; - } - } - escape(src) { - const cap = this.rules.inline.escape.exec(src); - if (cap) { - return { - type: 'escape', - raw: cap[0], - text: escape$1(cap[1]) - }; - } - } - tag(src) { - const cap = this.rules.inline.tag.exec(src); - if (cap) { - if (!this.lexer.state.inLink && /^/i.test(cap[0])) { - this.lexer.state.inLink = false; - } - if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = true; - } - else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = false; - } - return { - type: 'html', - raw: cap[0], - inLink: this.lexer.state.inLink, - inRawBlock: this.lexer.state.inRawBlock, - block: false, - text: cap[0] - }; - } - } - link(src) { - const cap = this.rules.inline.link.exec(src); - if (cap) { - const trimmedUrl = cap[2].trim(); - if (!this.options.pedantic && /^$/.test(trimmedUrl))) { - return; - } - // ending angle bracket cannot be escaped - const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); - if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { - return; - } - } - else { - // find closing parenthesis - const lastParenIndex = findClosingBracket(cap[2], '()'); - if (lastParenIndex > -1) { - const start = cap[0].indexOf('!') === 0 ? 5 : 4; - const linkLen = start + cap[1].length + lastParenIndex; - cap[2] = cap[2].substring(0, lastParenIndex); - cap[0] = cap[0].substring(0, linkLen).trim(); - cap[3] = ''; - } - } - let href = cap[2]; - let title = ''; - if (this.options.pedantic) { - // split pedantic href and title - const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); - if (link) { - href = link[1]; - title = link[3]; - } - } - else { - title = cap[3] ? cap[3].slice(1, -1) : ''; - } - href = href.trim(); - if (/^$/.test(trimmedUrl))) { - // pedantic allows starting angle bracket without ending angle bracket - href = href.slice(1); - } - else { - href = href.slice(1, -1); - } - } - return outputLink(cap, { - href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, - title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title - }, cap[0], this.lexer); - } - } - reflink(src, links) { - let cap; - if ((cap = this.rules.inline.reflink.exec(src)) - || (cap = this.rules.inline.nolink.exec(src))) { - const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); - const link = links[linkString.toLowerCase()]; - if (!link) { - const text = cap[0].charAt(0); - return { - type: 'text', - raw: text, - text - }; - } - return outputLink(cap, link, cap[0], this.lexer); - } - } - emStrong(src, maskedSrc, prevChar = '') { - let match = this.rules.inline.emStrongLDelim.exec(src); - if (!match) - return; - // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well - if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) - return; - const nextChar = match[1] || match[2] || ''; - if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { - // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) - const lLength = [...match[0]].length - 1; - let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; - const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; - endReg.lastIndex = 0; - // Clip maskedSrc to same section of string as src (move to lexer?) - maskedSrc = maskedSrc.slice(-1 * src.length + lLength); - while ((match = endReg.exec(maskedSrc)) != null) { - rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; - if (!rDelim) - continue; // skip single * in __abc*abc__ - rLength = [...rDelim].length; - if (match[3] || match[4]) { // found another Left Delim - delimTotal += rLength; - continue; - } - else if (match[5] || match[6]) { // either Left or Right Delim - if (lLength % 3 && !((lLength + rLength) % 3)) { - midDelimTotal += rLength; - continue; // CommonMark Emphasis Rules 9-10 - } - } - delimTotal -= rLength; - if (delimTotal > 0) - continue; // Haven't found enough closing delimiters - // Remove extra characters. *a*** -> *a* - rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); - // char length can be >1 for unicode characters; - const lastCharLength = [...match[0]][0].length; - const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); - // Create `em` if smallest delimiter has odd char count. *a*** - if (Math.min(lLength, rLength) % 2) { - const text = raw.slice(1, -1); - return { - type: 'em', - raw, - text, - tokens: this.lexer.inlineTokens(text) - }; - } - // Create 'strong' if smallest delimiter has even char count. **a*** - const text = raw.slice(2, -2); - return { - type: 'strong', - raw, - text, - tokens: this.lexer.inlineTokens(text) - }; - } - } - } - codespan(src) { - const cap = this.rules.inline.code.exec(src); - if (cap) { - let text = cap[2].replace(/\n/g, ' '); - const hasNonSpaceChars = /[^ ]/.test(text); - const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); - if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { - text = text.substring(1, text.length - 1); - } - text = escape$1(text, true); - return { - type: 'codespan', - raw: cap[0], - text - }; - } - } - br(src) { - const cap = this.rules.inline.br.exec(src); - if (cap) { - return { - type: 'br', - raw: cap[0] - }; - } - } - del(src) { - const cap = this.rules.inline.del.exec(src); - if (cap) { - return { - type: 'del', - raw: cap[0], - text: cap[2], - tokens: this.lexer.inlineTokens(cap[2]) - }; - } - } - autolink(src) { - const cap = this.rules.inline.autolink.exec(src); - if (cap) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[1]); - href = 'mailto:' + text; - } - else { - text = escape$1(cap[1]); - href = text; - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text - } - ] - }; - } - } - url(src) { - let cap; - if (cap = this.rules.inline.url.exec(src)) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[0]); - href = 'mailto:' + text; - } - else { - // do extended autolink path validation - let prevCapZero; - do { - prevCapZero = cap[0]; - cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; - } while (prevCapZero !== cap[0]); - text = escape$1(cap[0]); - if (cap[1] === 'www.') { - href = 'http://' + cap[0]; - } - else { - href = cap[0]; - } - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text - } - ] - }; - } - } - inlineText(src) { - const cap = this.rules.inline.text.exec(src); - if (cap) { - let text; - if (this.lexer.state.inRawBlock) { - text = cap[0]; - } - else { - text = escape$1(cap[0]); - } - return { - type: 'text', - raw: cap[0], - text - }; - } - } - } - - /** - * Block-Level Grammar - */ - const newline = /^(?: *(?:\n|$))+/; - const blockCode = /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/; - const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; - const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; - const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; - const bullet = /(?:[*+-]|\d{1,9}[.)])/; - const lheading = edit(/^(?!bull )((?:.|\n(?!\s*?\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) - .replace(/bull/g, bullet) // lists can interrupt - .getRegex(); - const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; - const blockText = /^[^\n]+/; - const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; - const def = edit(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/) - .replace('label', _blockLabel) - .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) - .getRegex(); - const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) - .replace(/bull/g, bullet) - .getRegex(); - const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' - + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' - + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' - + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' - + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' - + '|track|ul'; - const _comment = /|$)/; - const html = edit('^ {0,3}(?:' // optional indentation - + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:\\1>[^\\n]*\\n+|$)' // (1) - + '|comment[^\\n]*(\\n+|$)' // (2) - + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) - + '|\\n*|$)' // (4) - + '|\\n*|$)' // (5) - + '|?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (6) - + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag - + '|(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag - + ')', 'i') - .replace('comment', _comment) - .replace('tag', _tag) - .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) - .getRegex(); - const paragraph = edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', '?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(); - const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) - .replace('paragraph', paragraph) - .getRegex(); - /** - * Normal Block Grammar - */ - const blockNormal = { - blockquote, - code: blockCode, - def, - fences, - heading, - hr, - html, - lheading, - list, - newline, - paragraph, - table: noopTest, - text: blockText - }; - /** - * GFM Block Grammar - */ - const gfmTable = edit('^ *([^\\n ].*)\\n' // Header - + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align - + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('blockquote', ' {0,3}>') - .replace('code', ' {4}[^\\n]') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', '?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // tables can be interrupted by type (6) html blocks - .getRegex(); - const blockGfm = { - ...blockNormal, - table: gfmTable, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs - .replace('table', gfmTable) // interrupt paragraphs with table - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', '?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex() - }; - /** - * Pedantic grammar (original John Gruber's loose markdown specification) - */ - const blockPedantic = { - ...blockNormal, - html: edit('^ *(?:comment *(?:\\n|\\s*$)' - + '|<(tag)[\\s\\S]+?\\1> *(?:\\n{2,}|\\s*$)' // closed tag - + '|
'
- + (escaped ? code : escape$1(code, true))
- + '\n';
- }
- return ''
- + (escaped ? code : escape$1(code, true))
- + '\n';
- }
- blockquote(quote) {
- return `\n${quote}\n`; - } - html(html, block) { - return html; - } - heading(text, level, raw) { - // ignore IDs - return `
${text}
\n`; - } - table(header, body) { - if (body) - body = `${body}`; - return '${text}`;
- }
- br() {
- return 'An error occurred:
' - + escape$1(e.message + '', true) - + ''; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e); - } - throw e; - }; - } - } - - const markedInstance = new Marked(); - function marked(src, opt) { - return markedInstance.parse(src, opt); - } - /** - * Sets the default options. - * - * @param options Hash of options - */ - marked.options = - marked.setOptions = function (options) { - markedInstance.setOptions(options); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; - /** - * Gets the original marked default options. - */ - marked.getDefaults = _getDefaults; - marked.defaults = exports.defaults; - /** - * Use Extension - */ - marked.use = function (...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; - /** - * Run callback for every token - */ - marked.walkTokens = function (tokens, callback) { - return markedInstance.walkTokens(tokens, callback); - }; - /** - * Compiles markdown to HTML without enclosing `p` tag. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @return String of compiled HTML - */ - marked.parseInline = markedInstance.parseInline; - /** - * Expose - */ - marked.Parser = _Parser; - marked.parser = _Parser.parse; - marked.Renderer = _Renderer; - marked.TextRenderer = _TextRenderer; - marked.Lexer = _Lexer; - marked.lexer = _Lexer.lex; - marked.Tokenizer = _Tokenizer; - marked.Hooks = _Hooks; - marked.parse = marked; - const options = marked.options; - const setOptions = marked.setOptions; - const use = marked.use; - const walkTokens = marked.walkTokens; - const parseInline = marked.parseInline; - const parse = marked; - const parser = _Parser.parse; - const lexer = _Lexer.lex; - - exports.Hooks = _Hooks; - exports.Lexer = _Lexer; - exports.Marked = Marked; - exports.Parser = _Parser; - exports.Renderer = _Renderer; - exports.TextRenderer = _TextRenderer; - exports.Tokenizer = _Tokenizer; - exports.getDefaults = _getDefaults; - exports.lexer = lexer; - exports.marked = marked; - exports.options = options; - exports.parse = parse; - exports.parseInline = parseInline; - exports.parser = parser; - exports.setOptions = setOptions; - exports.use = use; - exports.walkTokens = walkTokens; - -})); -//# sourceMappingURL=marked.umd.js.map diff --git a/static/js/lib/node_modules/marked/lib/marked.umd.js.map b/static/js/lib/node_modules/marked/lib/marked.umd.js.map deleted file mode 100644 index f28b849..0000000 --- a/static/js/lib/node_modules/marked/lib/marked.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"marked.umd.js","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nconst _comment = /|$)/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|
'\n + (escaped ? code : escape(code, true))\n + '\\n';\n }\n return ''\n + (escaped ? code : escape(code, true))\n + '\\n';\n }\n blockquote(quote) {\n return `\\n${quote}\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `
${text}
\\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '${text}`;\n }\n br() {\n return 'An error occurred:
'\n + escape(e.message + '', true)\n + '';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["_defaults","escape"],"mappings":"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"} \ No newline at end of file diff --git a/static/js/lib/node_modules/marked/man/marked.1 b/static/js/lib/node_modules/marked/man/marked.1 deleted file mode 100644 index 029237c..0000000 --- a/static/js/lib/node_modules/marked/man/marked.1 +++ /dev/null @@ -1,111 +0,0 @@ -.TH "MARKED" "1" "December 2023" "11.1.0" -.SH "NAME" -\fBmarked\fR \- a javascript markdown parser -.SH SYNOPSIS -.P -\fBmarked\fP [\fB\-o\fP