{:group-id "com.timezynk", :artifact-id "useful", :version "4.1.0", :analysis {"clj" ({:name com.timezynk.useful.base64, :publics ({:name b64->vec, :file "com/timezynk/useful/base64.clj", :line 26, :arglists ([s]), :type :var} {:name base64-str, :file "com/timezynk/useful/base64.clj", :line 17, :arglists ([bytes]), :type :var} {:name base64-str-urlsafe, :file "com/timezynk/useful/base64.clj", :line 20, :arglists ([bytes]), :type :var} {:name decode, :file "com/timezynk/useful/base64.clj", :line 5, :arglists ([bytes]), :type :var} {:name decode-string, :file "com/timezynk/useful/base64.clj", :line 8, :arglists ([s]), :type :var} {:name encode, :file "com/timezynk/useful/base64.clj", :line 11, :arglists ([bytes]), :type :var} {:name is-base64?, :file "com/timezynk/useful/base64.clj", :line 14, :arglists ([bytes]), :type :var} {:name vec->b64, :file "com/timezynk/useful/base64.clj", :line 23, :arglists ([v]), :type :var})} {:name com.timezynk.useful.bcrypt, :publics ({:name compare-password, :file "com/timezynk/useful/bcrypt.clj", :line 16, :arglists ([pwhash password]), :type :var} {:name gen-salt, :file "com/timezynk/useful/bcrypt.clj", :line 9, :arglists ([]), :type :var} {:name hash-password, :file "com/timezynk/useful/bcrypt.clj", :line 11, :arglists ([password]), :type :var})} {:name com.timezynk.useful.cipher, :publics ({:name aes-decrypt, :file "com/timezynk/useful/cipher.clj", :line 26, :arglists ([aes-key bytes]), :doc "Decrypt the byte array with the given key. The first 16 bytes of the\nbyte array must be the IV.", :type :var} {:name aes-encrypt, :file "com/timezynk/useful/cipher.clj", :line 17, :arglists ([aes-key bytes]), :doc "Encrypt the byte array with the given key. Returns a byte-array\nwith the first 16-bytes being the IV, suitable for decryption with\naes-decrypt", :type :var} {:name aes-key, :file "com/timezynk/useful/cipher.clj", :line 8, :arglists ([password salt bits]), :doc "Generate AES key from the given password and salt. Salt should be eight\ncharacters long. Bits can be 128, 192 or 256.", :type :var}), :doc "AES cipher. Implementation inspired by\nhttp://stackoverflow.com/questions/992019/java-256bit-aes-encryption/"} {:name com.timezynk.useful.core, :publics ({:name concat-bytes, :file "com/timezynk/useful/core.clj", :line 8, :arglists ([a b]), :type :var} {:name parse-env, :file "com/timezynk/useful/core.clj", :line 49, :arglists ([env-var] [env-var fallback-value]), :type :var} {:name parse-server-string, :file "com/timezynk/useful/core.clj", :line 45, :arglists ([servers]), :type :var} {:name random-string, :file "com/timezynk/useful/core.clj", :line 28, :type :var} {:name server-description, :file "com/timezynk/useful/core.clj", :line 36, :arglists ([acc server]), :type :var} {:name SERVER_FORMAT, :file "com/timezynk/useful/core.clj", :line 34, :type :var} {:name split-bytes, :file "com/timezynk/useful/core.clj", :line 16, :arglists ([bytes pos]), :doc "Split byte array at index pos\n", :type :var} {:name timestamp, :file "com/timezynk/useful/core.clj", :line 5, :arglists ([]), :type :var} {:name with-err-str, :file "com/timezynk/useful/core.clj", :line 54, :arglists ([& body]), :doc "Evaluates exprs in a context in which *err* is bound to a fresh StringWriter.\nReturns the string created by any nested printing calls.", :type :macro})} {:name com.timezynk.useful.date, :publics ({:name beginning-of-week, :file "com/timezynk/useful/date.clj", :line 377, :arglists ([datetime]), :doc "Copy of the object with day set to Monday and time set to earliest possible.\n", :type :var} {:name ConversionJavaTime, :file "com/timezynk/useful/date.clj", :line 56, :type :protocol, :members ({:name days-between, :arglists ([start end]), :doc "Calculate days between dates.\n", :type :var} {:name to-datetime, :arglists ([obj] [obj tz] [obj tz :discard? discard?]), :doc "Convert to zoned datetime.\n", :type :var} {:name to-iso, :arglists ([obj]), :doc "Convert to iso string.\n", :type :var} {:name to-localdate, :arglists ([obj]), :doc "Convert to date.\n", :type :var} {:name to-millis, :arglists ([obj]), :doc "Convert date/datetime to millisecond timestamp.\n", :type :var} {:name to-time, :arglists ([obj]), :doc "Convert to time.\n", :type :var} {:name to-utildate, :arglists ([obj]), :doc "Convert to java.util.Date.\n", :type :var})} {:name date-seq, :file "com/timezynk/useful/date.clj", :line 413, :arglists ([start-date end-date] [start-date end-date step]), :type :var} {:name date-string?, :file "com/timezynk/useful/date.clj", :line 358, :arglists ([d]), :type :var} {:name date-time-pattern, :file "com/timezynk/useful/date.clj", :line 10, :type :var} {:name duration->hours, :file "com/timezynk/useful/date.clj", :line 363, :arglists ([d]), :type :var} {:name earliest, :file "com/timezynk/useful/date.clj", :line 406, :arglists ([a b]), :type :var} {:name first-time-after, :file "com/timezynk/useful/date.clj", :line 371, :arglists ([date-time time]), :type :var} {:name format, :file "com/timezynk/useful/date.clj", :line 320, :doc "Format java.time object according to custom format string.\n", :type :multimethod} {:name formatter, :file "com/timezynk/useful/date.clj", :line 326, :doc "Format java.time object according to a two-letter style string.\n", :type :multimethod} {:name get-zone, :file "com/timezynk/useful/date.clj", :line 12, :arglists ([]), :doc "Return the timezone object for the current session,\nor the default timezone object if the former can't be found.", :type :var} {:name gte, :file "com/timezynk/useful/date.clj", :line 396, :arglists ([a b]), :type :var} {:name iso-pattern, :file "com/timezynk/useful/date.clj", :line 9, :type :var} {:name last-day-of-last-month, :file "com/timezynk/useful/date.clj", :line 37, :arglists ([]), :doc "Create a LocalDate for today's date, and rewind it to last day of last month.\n", :type :var} {:name last-day-of-the-month, :file "com/timezynk/useful/date.clj", :line 387, :arglists ([date]), :type :var} {:name latest, :file "com/timezynk/useful/date.clj", :line 399, :arglists ([a b]), :type :var} {:name lte, :file "com/timezynk/useful/date.clj", :line 393, :arglists ([a b]), :type :var} {:name now, :file "com/timezynk/useful/date.clj", :line 19, :arglists ([] [tz]), :doc "Return the timezone object for the current session,\nor the default timezone object if the former can't be found.", :type :var} {:name parse-rfc-1123, :file "com/timezynk/useful/date.clj", :line 354, :arglists ([s]), :type :var} {:name rfc-1123-formatter, :file "com/timezynk/useful/date.clj", :line 345, :type :var} {:name start-of-day, :file "com/timezynk/useful/date.clj", :line 31, :arglists ([] [tz]), :doc "Return the current date, with the earliest possible time for this timezone.\n", :type :var} {:name to-rfc-1123, :file "com/timezynk/useful/date.clj", :line 350, :arglists ([d]), :type :var} {:name today, :file "com/timezynk/useful/date.clj", :line 26, :arglists ([]), :doc "Return the current date.\n", :type :var})} {:name com.timezynk.useful.email.template, :publics ({:name ->str, :file "com/timezynk/useful/email/template.clj", :line 45, :arglists ([nodes]), :type :var} {:name data-subject, :file "com/timezynk/useful/email/template.clj", :line 9, :arglists ([template]), :type :var} {:name escaper, :file "com/timezynk/useful/email/template.clj", :line 15, :arglists ([m]), :type :var} {:name load-template, :file "com/timezynk/useful/email/template.clj", :line 54, :arglists ([path]), :type :var} {:name moustache, :file "com/timezynk/useful/email/template.clj", :line 21, :arglists ([template vars]), :type :var} {:name subject, :file "com/timezynk/useful/email/template.clj", :line 6, :arglists ([template]), :type :var} {:name tmpl->str, :file "com/timezynk/useful/email/template.clj", :line 48, :arglists ([tmpl params]), :type :var} {:name transformations, :file "com/timezynk/useful/email/template.clj", :line 25, :arglists ([template params]), :type :var})} {:name com.timezynk.useful.email.validate, :publics ({:name validate-email, :file "com/timezynk/useful/email/validate.clj", :line 4, :arglists ([email]), :type :var})} {:name com.timezynk.useful.env, :publics ({:name CLJ_ENV, :file "com/timezynk/useful/env.clj", :line 3, :type :var} {:name development?, :file "com/timezynk/useful/env.clj", :line 11, :type :var} {:name production?, :file "com/timezynk/useful/env.clj", :line 14, :type :var} {:name test?, :file "com/timezynk/useful/env.clj", :line 8, :type :var})} {:name com.timezynk.useful.hash, :publics ({:name b64-hmac-sha1, :file "com/timezynk/useful/hash.clj", :line 26, :arglists ([data hmac-key]), :type :var} {:name b64-hmac-sha256, :file "com/timezynk/useful/hash.clj", :line 21, :arglists ([data hmac-key]), :type :var} {:name b64-md5, :file "com/timezynk/useful/hash.clj", :line 29, :arglists ([data]), :type :var} {:name b64-sha256, :file "com/timezynk/useful/hash.clj", :line 38, :arglists ([data]), :type :var} {:name b64-urlsafe-md5, :file "com/timezynk/useful/hash.clj", :line 32, :arglists ([data]), :type :var} {:name digest, :file "com/timezynk/useful/hash.clj", :line 5, :arglists ([algo]), :type :var} {:name hex-md5, :file "com/timezynk/useful/hash.clj", :line 35, :arglists ([data]), :type :var} {:name hmac, :file "com/timezynk/useful/hash.clj", :line 14, :arglists ([algo bytes key-bytes]), :type :var} {:name hmac-sha1, :file "com/timezynk/useful/hash.clj", :line 24, :type :var} {:name hmac-sha256, :file "com/timezynk/useful/hash.clj", :line 19, :type :var} {:name md5, :file "com/timezynk/useful/hash.clj", :line 12, :type :var} {:name sha256, :file "com/timezynk/useful/hash.clj", :line 10, :type :var})} {:name com.timezynk.useful.locale, :publics ({:name *locale*, :file "com/timezynk/useful/locale.clj", :line 7, :dynamic true, :type :var} {:name current-locale, :file "com/timezynk/useful/locale.clj", :line 19, :arglists ([]), :type :var} {:name date-formatter, :file "com/timezynk/useful/locale.clj", :line 80, :arglists ([style]), :type :var} {:name date-pattern-formatter, :file "com/timezynk/useful/locale.clj", :line 75, :arglists ([pattern]), :type :var} {:name locale, :file "com/timezynk/useful/locale.clj", :line 23, :arglists ([req]), :type :var} {:name localized-resource, :file "com/timezynk/useful/locale.clj", :line 55, :arglists ([basename extension]), :type :var} {:name set-translations-path!, :file "com/timezynk/useful/locale.clj", :line 11, :arglists ([path]), :type :var} {:name translator, :file "com/timezynk/useful/locale.clj", :line 62, :arglists ([] [base-name]), :type :var} {:name user-locale, :file "com/timezynk/useful/locale.clj", :line 41, :arglists ([user]), :type :var} {:name with-locale, :file "com/timezynk/useful/locale.clj", :line 31, :arglists ([req & body]), :type :macro} {:name with-locale*, :file "com/timezynk/useful/locale.clj", :line 36, :arglists ([lang & body]), :type :macro} {:name with-user-locale, :file "com/timezynk/useful/locale.clj", :line 45, :arglists ([user & body]), :type :macro} {:name wrap-locale, :file "com/timezynk/useful/locale.clj", :line 50, :arglists ([handler]), :type :var})} {:name com.timezynk.useful.logback.pii-scrubber, :publics ({:name -doLayout, :file "com/timezynk/useful/logback/pii_scrubber.clj", :line 57, :arglists ([this event]), :type :var} {:name -init, :file "com/timezynk/useful/logback/pii_scrubber.clj", :line 34, :arglists ([]), :type :var} {:name -setField, :file "com/timezynk/useful/logback/pii_scrubber.clj", :line 38, :arglists ([this field]), :type :var} {:name -setMemento, :file "com/timezynk/useful/logback/pii_scrubber.clj", :line 42, :arglists ([this memento]), :type :var} {:name DEFAULT_MEMENTO, :file "com/timezynk/useful/logback/pii_scrubber.clj", :line 31, :type :var} {:name EMAIL_REGEXP, :file "com/timezynk/useful/logback/pii_scrubber.clj", :line 20, :type :var} {:name PHONENO_REGEXP, :file "com/timezynk/useful/logback/pii_scrubber.clj", :line 23, :type :var}), :doc "Logback Layout which filters out sensitive information.\n\nIs configured via and XML elements.\nWhen logging Clojure maps:\n Finds all occurrences of and replaces their value with .\nRegardless of formatting:\n Replaces all email addresses and phone numbers with ."} {:name com.timezynk.useful.logger, :publics ({:name factory, :file "com/timezynk/useful/logger.clj", :line 49, :arglists ([]), :doc "Creates and wraps a SLF4J factory so that it posts ERROR messages on Slack.\n", :type :var})} {:name com.timezynk.useful.map, :publics ({:name filter-fields, :file "com/timezynk/useful/map.clj", :line 21, :arglists ([fields]), :type :var} {:name id-map, :file "com/timezynk/useful/map.clj", :line 18, :arglists ([coll]), :type :var} {:name index-by, :file "com/timezynk/useful/map.clj", :line 11, :arglists ([f coll]), :type :var} {:name into-set, :file "com/timezynk/useful/map.clj", :line 31, :arglists ([entries]), :type :var} {:name into-vec, :file "com/timezynk/useful/map.clj", :line 28, :arglists ([entries]), :type :var} {:name map->map, :file "com/timezynk/useful/map.clj", :line 4, :arglists ([proto]), :doc "Recursively copy a map-like object into a vanilla clojure map\n", :type :var} {:name unique-vals, :file "com/timezynk/useful/map.clj", :line 34, :arglists ([k & colls]), :type :var})} {:name com.timezynk.useful.measured-future, :publics ({:name can-return-result, :file "com/timezynk/useful/measured_future.clj", :line 31, :type :var} {:name future-counter, :file "com/timezynk/useful/measured_future.clj", :line 7, :type :var} {:name future-seconds, :file "com/timezynk/useful/measured_future.clj", :line 11, :type :var} {:name measured-future, :file "com/timezynk/useful/measured_future.clj", :line 18, :arglists ([& body]), :type :macro} {:name thread-bean, :file "com/timezynk/useful/measured_future.clj", :line 15, :type :var} {:name thread-cpu-time, :file "com/timezynk/useful/measured_future.clj", :line 16, :arglists ([]), :type :var})} {:name com.timezynk.useful.mongo, :publics ({:name acceptance-of, :file "validateur/validation.clj", :line 132, :arglists ([attribute & {:keys [allow-nil accept], :or {allow-nil false, accept #{true "true" "1"}}}]), :doc "Returns a function that, when given a map, will validate that the value of the attribute in that map is accepted.\nBy default, values that are considered accepted: true, \"true\", \"1\". Primarily used for validation of data that comes from\nWeb forms.\n\nAccepted options:\n\n:allow-nil (default: false): should nil values be allowed?\n:accept (default: #{true, \"true\", \"1\"}): pass to use a custom list of values that will be considered accepted\n\nUsed in conjunction with validation-set:\n\n(use 'validateur.validations)\n\n(validation-set\n (presence-of :name)\n (presence-of :age)\n (acceptance-of :terms))", :type :var} {:name child-of, :file "com/timezynk/useful/mongo.clj", :line 219, :arglists ([attribute & body]), :type :macro} {:name children-of, :file "com/timezynk/useful/mongo.clj", :line 228, :arglists ([attribute & body]), :type :macro} {:name ConvertibleToLong, :file "com/timezynk/useful/mongo.clj", :line 151, :type :protocol, :members ({:name to-long, :arglists ([o]), :doc "Convert to long\n", :type :var})} {:name copy-attr, :file "com/timezynk/useful/mongo.clj", :line 114, :arglists ([e k] [e k f]), :type :var} {:name defvalidator, :file "com/timezynk/useful/mongo.clj", :line 189, :arglists ([fn-name & body]), :type :macro} {:name DoubleConvertible, :file "com/timezynk/useful/mongo.clj", :line 134, :type :protocol, :members ({:name to-double, :arglists ([d]), :doc "Convert to double\n", :type :var})} {:name exclusion-of, :file "validateur/validation.clj", :line 190, :arglists ([attribute & {:keys [allow-nil in], :or {allow-nil false}}]), :doc "Returns a function that, when given a map, will validate that the value of the attribute in that map is not one of the given.\n\nAccepted options:\n\n:allow-nil (default: false): should nil values be allowed?\n:in (default: nil): a collection of invalid values for the attribute\n\nUsed in conjunction with validation-set:\n\n(use 'validateur.validations)\n\n(validation-set\n (presence-of :name)\n (presence-of :age)\n (exclusion-of :status :in #{\"banned\" \"non-activated\"}))", :type :var} {:name extend-defaults, :file "com/timezynk/useful/mongo.clj", :line 176, :arglists ([defaults entry]), :type :var} {:name fetch, :file "com/timezynk/useful/mongo.clj", :line 237, :arglists ([& args]), :type :var} {:name find-by-id, :file "com/timezynk/useful/mongo.clj", :line 247, :arglists ([collection id]), :type :var} {:name format-of, :file "validateur/validation.clj", :line 218, :arglists ([attribute & {:keys [allow-nil allow-blank format], :or {allow-nil false, allow-blank false}}]), :doc "Returns a function that, when given a map, will validate that the value of the attribute in that map is in the given format.\n\nAccepted options:\n\n:allow-nil (default: false): should nil values be allowed?\n:allow-blank (default: false): should blank string values be allowed?\n:format (default: nil): a regular expression of the format\n\nUsed in conjunction with validation-set:\n\n(use 'validateur.validations)\n\n(validation-set\n (presence-of :username)\n (presence-of :age)\n (format-of :username :format #\"[a-zA-Z0-9_]\")", :type :var} {:name get-id-in, :file "com/timezynk/useful/mongo.clj", :line 170, :arglists ([m ks]), :type :var} {:name get-ids-in, :file "com/timezynk/useful/mongo.clj", :line 173, :arglists ([m ks]), :type :var} {:name inclusion-of, :file "validateur/validation.clj", :line 162, :arglists ([attribute & {:keys [allow-nil in], :or {allow-nil false}}]), :doc "Returns a function that, when given a map, will validate that the value of the attribute in that map is one of the given.\n\nAccepted options:\n\n:allow-nil (default: false): should nil values be allowed?\n:in (default: nil): a collection of valid values for the attribute\n\nUsed in conjunction with validation-set:\n\n(use 'validateur.validations)\n\n(validation-set\n (presence-of :name)\n (presence-of :age)\n (inclusion-of :team :in #{\"red\" \"blue\"}))", :type :var} {:name insert!, :file "com/timezynk/useful/mongo.clj", :line 240, :arglists ([collection entry]), :type :var} {:name insert-and-wait!, :file "com/timezynk/useful/mongo.clj", :line 243, :arglists ([collection entry]), :type :var} {:name intersecting-query, :file "com/timezynk/useful/mongo.clj", :line 253, :arglists ([from to] [from to start-key end-key]), :type :var} {:name length-of, :file "validateur/validation.clj", :line 248, :arglists ([attribute & {:keys [allow-nil is within allow-blank], :or {allow-nil false, allow-blank false}}]), :doc "Returns a function that, when given a map, will validate that the value of the attribute in that map is of the given length.\n\nAccepted options:\n\n:allow-nil (default: false): should nil values be allowed?\n:allow-blank (default: false): should blank string values be allowed?\n:is (default: nil): an exact length, as long\n:within (default: nil): a range of lengths\n\nUsed in conjunction with validation-set:\n\n(use 'validateur.validations)\n\n(validation-set\n (presence-of :name)\n (presence-of :age)\n (length-of :password :within (range 6 100))\n\n(validation-set\n (presence-of :name)\n (presence-of :age)\n (length-of :zip :is 5)", :type :var} {:name map-copy-attr, :file "com/timezynk/useful/mongo.clj", :line 120, :arglists ([e ks] [e ks f]), :type :macro} {:name nil-empty-strings, :file "com/timezynk/useful/mongo.clj", :line 162, :arglists ([a]), :type :var} {:name numericality-of, :file "validateur/validation.clj", :line 76, :arglists ([attribute & {:keys [allow-nil only-integer gt gte lt lte equal-to odd even], :or {allow-nil false, only-integer false, odd false, even false}}]), :doc "Returns a function that, when given a map, will validate that the value of the attribute in that map is numerical.\n\nAccepted options:\n\n:allow-nil (default: false): should nil values be allowed?\n:only-integer (default: false): should only integer values be allowed?\n:even (default: false): should even values be allowed?\n:odd (default: false): should odd values be allowed?\n:equal-to: accept only values equal to the given\n:gt: accept only values greater than the given\n:gte: accept only values greater than or equal to the given\n:lt: accept only values less than the given\n:lte: accept only values less than or equal to the given\n\nUsed in conjunction with validation-set:\n\n(use 'validateur.validations)\n\n(validation-set\n (presence-of :name)\n (presence-of :age)\n (numericality-of :age :only-integer true :gte 18))", :type :var} {:name object-id-of, :file "com/timezynk/useful/mongo.clj", :line 212, :arglists ([attribute]), :type :var} {:name object-id-q, :file "com/timezynk/useful/mongo.clj", :line 130, :arglists ([k id]), :type :var} {:name object-id?, :file "com/timezynk/useful/mongo.clj", :line 100, :arglists ([s]), :type :var} {:name object-ids, :file "com/timezynk/useful/mongo.clj", :line 96, :arglists ([ids]), :type :var} {:name object-ids-q, :file "com/timezynk/useful/mongo.clj", :line 126, :arglists ([k ids]), :type :var} {:name OBJECT_ID_REGEX, :file "com/timezynk/useful/mongo.clj", :line 13, :type :var} {:name pack-id, :file "com/timezynk/useful/mongo.clj", :line 108, :arglists ([entry]), :type :var} {:name PotentialObjectId, :file "com/timezynk/useful/mongo.clj", :line 15, :type :protocol, :members ({:name object-id, :arglists ([o]), :doc "Convert to object id\n", :type :var})} {:name presence-of, :file "validateur/validation.clj", :line 56, :arglists ([attribute]), :doc "Returns a function that, when given a map, will validate presence of the attribute in that map.\n\nUsed in conjunction with validation-set:\n\n(use 'validateur.validations)\n\n(validation-set\n (presence-of :name)\n (presence-of :age))", :type :var} {:name start-inside-period-query, :file "com/timezynk/useful/mongo.clj", :line 259, :arglists ([from to] [from to start-key]), :type :var} {:name unpack-id, :file "com/timezynk/useful/mongo.clj", :line 105, :arglists ([entry]), :type :var} {:name unpack-ids, :file "com/timezynk/useful/mongo.clj", :line 111, :arglists ([entries]), :type :var} {:name validate-all, :file "com/timezynk/useful/mongo.clj", :line 198, :arglists ([vs entries]), :type :var} {:name validate-object-id, :file "com/timezynk/useful/mongo.clj", :line 182, :arglists ([& ids]), :type :var} {:name validate-string, :file "com/timezynk/useful/mongo.clj", :line 179, :arglists ([& strings]), :type :var})} {:name com.timezynk.useful.mongo.db, :publics ({:name db, :file "com/timezynk/useful/mongo/db.clj", :line 25, :type :var} {:name DUPLICATE_KEY_ERROR, :file "com/timezynk/useful/mongo/db.clj", :line 6, :type :var} {:name make-connection, :file "com/timezynk/useful/mongo/db.clj", :line 15, :arglists ([url]), :type :var} {:name mongo-url, :file "com/timezynk/useful/mongo/db.clj", :line 9, :arglists ([]), :type :var} {:name set-default-mongo-url!, :file "com/timezynk/useful/mongo/db.clj", :line 22, :arglists ([url]), :type :var} {:name wrap-mongo, :file "com/timezynk/useful/mongo/db.clj", :line 28, :arglists ([handler db]), :type :var})} {:name com.timezynk.useful.mongo.queue, :publics ({:name create, :file "com/timezynk/useful/mongo/queue.clj", :line 115, :arglists ([& {:as params}]), :type :var} {:name DEFAULT_MIN_INTERVAL, :file "com/timezynk/useful/mongo/queue.clj", :line 10, :type :var} {:name DEFAULT_MIN_SLEEP, :file "com/timezynk/useful/mongo/queue.clj", :line 11, :type :var} {:name DEFAULT_NUM_WORKERS, :file "com/timezynk/useful/mongo/queue.clj", :line 9, :type :var} {:name WorkQueue, :file "com/timezynk/useful/mongo/queue.clj", :line 17, :type :protocol, :members ({:name start-workers!, :arglists ([this thread-name]), :doc "Starts all worker threads.\n", :type :var} {:name stop-workers!, :arglists ([this]), :doc "Stops all worker threads.\n", :type :var})})} {:name com.timezynk.useful.nsq, :publics ({:name create-message-handler, :file "com/timezynk/useful/nsq.clj", :line 35, :arglists ([f]), :doc "Turns function f into a Java object which implements MessageHandler.\n", :type :var} {:name create-publish-api, :file "com/timezynk/useful/nsq.clj", :line 6, :arglists ([servers config]), :doc "Creates a com.sproutsocial.nsq.Publisher object.\n", :type :var} {:name create-subscribe-api, :file "com/timezynk/useful/nsq.clj", :line 28, :arglists ([lookup-server config]), :doc "Creates a com.sproutsocial.nsq.Subscriber object.\n", :type :var} {:name publish, :file "com/timezynk/useful/nsq.clj", :line 14, :arglists ([api topic message]), :doc "Asynchronously serializes and publishes message on topic through api.\nReturns the operation wrapped in a future.", :type :var} {:name subscribe, :file "com/timezynk/useful/nsq.clj", :line 52, :arglists ([api topic channel f]), :doc "Idempotently subscribes f to topic on channel through api.\nf must take two string arguments: topic and message.", :type :var})} {:name com.timezynk.useful.prometheus.core, :publics ({:name backend-id, :file "com/timezynk/useful/prometheus/core.clj", :line 13, :type :var} {:name counter, :file "com/timezynk/useful/prometheus/core.clj", :line 38, :arglists ([n h & label-names]), :type :var} {:name counter-with-labels, :file "com/timezynk/useful/prometheus/core.clj", :line 17, :arglists ([counter & labels]), :type :var} {:name gauge, :file "com/timezynk/useful/prometheus/core.clj", :line 46, :arglists ([n h & label-names]), :type :var} {:name gauge-with-labels, :file "com/timezynk/useful/prometheus/core.clj", :line 23, :arglists ([histogram & labels]), :type :var} {:name histogram, :file "com/timezynk/useful/prometheus/core.clj", :line 54, :arglists ([n h buckets & label-names]), :type :var} {:name histogram-with-labels, :file "com/timezynk/useful/prometheus/core.clj", :line 20, :arglists ([histogram & labels]), :type :var} {:name inc!, :file "com/timezynk/useful/prometheus/core.clj", :line 26, :arglists ([counter & labels]), :type :var} {:name inc-by!, :file "com/timezynk/useful/prometheus/core.clj", :line 30, :arglists ([counter value & labels]), :type :var} {:name init-default-exports, :file "com/timezynk/useful/prometheus/core.clj", :line 63, :arglists ([]), :type :var} {:name observe!, :file "com/timezynk/useful/prometheus/core.clj", :line 34, :arglists ([histogram value & labels]), :type :var} {:name PROMETHEUS_NAMESPACE, :file "com/timezynk/useful/prometheus/core.clj", :line 15, :type :var} {:name unregister, :file "com/timezynk/useful/prometheus/core.clj", :line 66, :arglists ([collector]), :type :var})} {:name com.timezynk.useful.prometheus.middleware, :publics ({:name anonymize-uri, :file "com/timezynk/useful/prometheus/middleware.clj", :line 71, :type :var} {:name get-client, :file "com/timezynk/useful/prometheus/middleware.clj", :line 31, :arglists ([{:keys [headers]}]), :type :var} {:name get-products, :file "com/timezynk/useful/prometheus/middleware.clj", :line 26, :arglists ([user-agent]), :type :var} {:name get-uri, :file "com/timezynk/useful/prometheus/middleware.clj", :line 35, :arglists ([{:keys [uri]}]), :type :var} {:name histogram, :file "com/timezynk/useful/prometheus/middleware.clj", :line 21, :type :var} {:name request-counter, :file "com/timezynk/useful/prometheus/middleware.clj", :line 13, :type :var} {:name request-seconds, :file "com/timezynk/useful/prometheus/middleware.clj", :line 17, :type :var} {:name SLOW_LOG_LIMIT, :file "com/timezynk/useful/prometheus/middleware.clj", :line 11, :type :var} {:name UA_PRODUCTS, :file "com/timezynk/useful/prometheus/middleware.clj", :line 10, :type :var} {:name wrap-metrics, :file "com/timezynk/useful/prometheus/middleware.clj", :line 49, :arglists ([handler version]), :type :var})} {:name com.timezynk.useful.prometheus.routes, :publics ({:name http-routes, :file "com/timezynk/useful/prometheus/routes.clj", :line 16, :type :var} {:name metrics, :file "com/timezynk/useful/prometheus/routes.clj", :line 8, :arglists ([]), :type :var})} {:name com.timezynk.useful.rest, :publics ({:name agent-info, :file "com/timezynk/useful/rest.clj", :line 90, :arglists ([req]), :type :var} {:name encode-filename, :file "com/timezynk/useful/rest.clj", :line 55, :arglists ([filename]), :type :var} {:name error, :file "com/timezynk/useful/rest.clj", :line 32, :arglists ([status message]), :type :var} {:name etag-response, :file "com/timezynk/useful/rest.clj", :line 71, :arglists ([req response]), :type :var} {:name file-response, :file "com/timezynk/useful/rest.clj", :line 60, :arglists ([body & {:keys [filename content-type content-description]}]), :type :var} {:name integer-param, :file "com/timezynk/useful/rest.clj", :line 95, :arglists ([params k default]), :type :var} {:name json-response, :file "com/timezynk/useful/rest.clj", :line 41, :arglists ([body & {:keys [status headers], :or {status 200}}]), :type :var} {:name not-found, :file "com/timezynk/useful/rest.clj", :line 38, :arglists ([]), :type :var} {:name PLUS, :file "com/timezynk/useful/rest.clj", :line 53, :type :var} {:name remove-nil, :file "com/timezynk/useful/rest.clj", :line 100, :arglists ([u]), :type :var} {:name unauthorized, :file "com/timezynk/useful/rest.clj", :line 35, :arglists ([]), :type :var})} {:name com.timezynk.useful.rest.current-user, :publics ({:name company-id, :file "com/timezynk/useful/rest/current_user.clj", :line 13, :arglists ([]), :type :var} {:name role, :file "com/timezynk/useful/rest/current_user.clj", :line 16, :arglists ([]), :type :var} {:name timezone, :file "com/timezynk/useful/rest/current_user.clj", :line 19, :arglists ([]), :type :var} {:name user-id, :file "com/timezynk/useful/rest/current_user.clj", :line 10, :arglists ([]), :type :var} {:name with-user, :file "com/timezynk/useful/rest/current_user.clj", :line 5, :arglists ([user & body]), :type :macro})} {:name com.timezynk.useful.rest.middleware, :publics ({:name rng, :file "com/timezynk/useful/rest/middleware.clj", :line 8, :type :var} {:name wrap-cors, :file "com/timezynk/useful/rest/middleware.clj", :line 43, :arglists ([handler]), :type :var} {:name wrap-exceptions, :file "com/timezynk/useful/rest/middleware.clj", :line 10, :arglists ([handler]), :type :var} {:name wrap-nocache, :file "com/timezynk/useful/rest/middleware.clj", :line 35, :arglists ([handler]), :type :var})} {:name com.timezynk.useful.rest.middleware.handler, :publics ({:name authorization, :file "com/timezynk/useful/rest/middleware/handler.clj", :line 19, :arglists ([e]), :type :var} {:name generic, :file "com/timezynk/useful/rest/middleware/handler.clj", :line 29, :arglists ([e]), :type :var} {:name slingshot, :file "com/timezynk/useful/rest/middleware/handler.clj", :line 24, :arglists ([e]), :type :var} {:name spec, :file "com/timezynk/useful/rest/middleware/handler.clj", :line 9, :arglists ([e]), :type :var} {:name validation, :file "com/timezynk/useful/rest/middleware/handler.clj", :line 14, :arglists ([e]), :type :var})} {:name com.timezynk.useful.rest.middleware.logger, :publics ({:name authorization, :file "com/timezynk/useful/rest/middleware/logger.clj", :line 27, :arglists ([req e]), :type :var} {:name generic, :file "com/timezynk/useful/rest/middleware/logger.clj", :line 50, :arglists ([req e]), :type :var} {:name slingshot, :file "com/timezynk/useful/rest/middleware/logger.clj", :line 42, :arglists ([req e]), :type :var} {:name spec, :file "com/timezynk/useful/rest/middleware/logger.clj", :line 13, :arglists ([req e]), :type :var} {:name validation, :file "com/timezynk/useful/rest/middleware/logger.clj", :line 20, :arglists ([req e]), :type :var})} {:name com.timezynk.useful.string, :publics ({:name from-request, :file "com/timezynk/useful/string.clj", :line 14, :arglists ([req]), :doc "String representation of an HTTP request. Aims for maximum aid to debugging.\n", :type :var} {:name from-throwable, :file "com/timezynk/useful/string.clj", :line 25, :arglists ([t] [t depth]), :type :var}), :doc "Helpers for turning objects, data structures, etc into strings.\n"} {:name com.timezynk.useful.time, :publics ({:name sleep-pad, :file "com/timezynk/useful/time.clj", :line 3, :arglists ([min-duration min-sleep & body]), :doc "Makes `body` last at least as long as `min-duration` by sleeping after.\nMeasures `min-duration` and `min-sleep` in milliseconds.", :type :macro})} {:name com.timezynk.useful.timed-queue, :publics ({:name TimedQueue, :file "com/timezynk/useful/timed_queue.clj", :line 3, :type :protocol, :members ({:name push-job!, :arglists ([this type run-at payload]), :doc "Add job to queue, scheduled to run no earlier than run-at milliseconds after epoch.\n", :type :var} {:name upsert-job!, :arglists ([this type run-at selector update]), :doc "Update or insert a job into the queue, scheduled to run no earlier than run-at milliseconds after epoch.\n", :type :var})})})}, :pom-str "\n\n 4.0.0\n com.timezynk\n useful\n jar\n 4.1.0\n useful\n Useful functions\n https://gitlab.com/timezynk/libs-useful\n \n \n BSD 3 Clause\n https://opensource.org/licenses/BSD-3-Clause\n \n \n \n 10c46db13bf0fce0d6bb10eaa8b83065a838fc73\n \n \n src\n src\n \n \n resources\n \n \n \n \n resources-dev\n \n \n resources\n \n \n target\n target/classes\n \n \n org.codehaus.mojo\n build-helper-maven-plugin\n 1.7\n \n \n add-test-source\n generate-test-sources\n \n add-test-source\n \n \n \n test\n \n \n \n \n \n \n \n \n \n central\n https://repo1.maven.org/maven2/\n \n false\n \n \n true\n \n \n \n clojars\n https://repo.clojars.org/\n \n true\n \n \n true\n \n \n \n \n \n \n \n \n ch.qos.logback\n logback-core\n 1.2.12\n \n \n ch.qos.logback\n logback-classic\n 1.2.12\n \n \n ch.qos.logback.contrib\n logback-jackson\n 0.1.5\n \n \n ch.qos.logback.contrib\n logback-json-classic\n 0.1.5\n \n \n cheshire\n cheshire\n 5.11.0\n \n \n com.fasterxml.jackson.core\n jackson-databind\n 2.11.4\n \n \n com.novemberain\n validateur\n 1.2.0\n \n \n com.slack.api\n slack-api-client\n 1.37.0\n \n \n slf4j-api\n org.slf4j\n \n \n \n \n com.sproutsocial\n nsq-j\n 0.9.4\n \n \n com.timezynk\n mongo\n 0.9.1\n \n \n commons-codec\n commons-codec\n 1.15\n \n \n commons-validator\n commons-validator\n 1.8.0\n \n \n compojure\n compojure\n 1.7.0\n provided\n \n \n congomongo\n congomongo\n 2.6.0\n provided\n \n \n enlive\n enlive\n 1.1.6\n \n \n io.github.clj-kondo\n config-slingshot-slingshot\n 1.0.0\n \n \n io.prometheus\n simpleclient\n 0.9.0\n \n \n io.prometheus\n simpleclient_common\n 0.9.0\n \n \n io.prometheus\n simpleclient_hotspot\n 0.9.0\n \n \n jbcrypt\n jbcrypt\n 0.3\n \n \n joda-time\n joda-time\n 2.10\n \n \n org.apache.logging.log4j\n log4j-to-slf4j\n 2.17.2\n \n \n slf4j-api\n org.slf4j\n \n \n \n \n org.clojure\n clojure\n 1.11.1\n provided\n \n \n org.clojure\n tools.logging\n 1.2.4\n \n \n potemkin\n potemkin\n 0.4.5\n \n \n slingshot\n slingshot\n 0.12.2\n \n \n tortue\n spy\n 2.13.0\n \n \n org.codehaus.janino\n janino\n 3.1.9\n test\n \n \n\n\n\n"}