{"version":3,"sources":["jsdelivr-header.js","/npm/sqlite-cloudflare-d1@0.0.2/dist/index.js"],"names":[],"mappings":"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","file":"/npm/sqlite-cloudflare-d1@0.0.2/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/sqlite-cloudflare-d1@0.0.2/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","async function all(db, query, values) {\n    try {\n        const { results, success, error } = await db\n            .prepare(query)\n            .bind(...values)\n            .all();\n        if (!success) {\n            throw new Error(error + \"\\n\" + query);\n        }\n        return results;\n    }\n    catch (error) {\n        error.message += \"\\n\" + query;\n        throw error;\n    }\n}\n/**!\n * Inserts a single row into and returns the inserted row.\n *\n * Example:\n * ```\n * insert(db, {\n *   into: \"users\",\n *   data: { name: \"bob\", age: 30 }\n * });\n * // { id: 1, name: \"bob\", age: 30 }\n * ```\n */\nexport async function insert(db, { into, data }) {\n    const keys = Object.keys(data);\n    const values = Object.values(data);\n    const keys_ = keys.join(\",\");\n    const values_ = values.map((_) => \"?\").join(\",\");\n    const query = `INSERT INTO ${into} (${keys_}) VALUES (${values_}) RETURNING *;`;\n    return await db\n        .prepare(query)\n        .bind(...values)\n        .first();\n}\n/**!\n * Inserts multiple rows and returns the inserted rows.\n *\n * Example:\n * ```\n * insert(db, {\n *   into: \"users\",\n *   data: [\n *     { name: \"bob\", age: 30 }\n *     { name: \"tom\", age: 20 }\n * });\n * // [\n * //   { id: 1, name: \"bob\", age: 30 },\n * //   { id: 2, name: \"tom\", age: 20 }\n * // ]\n * ```\n */\nexport async function insertMany(db, { into, data }) {\n    const keys = Object.keys(data[0]);\n    const keys_ = keys.join(\",\");\n    const qs_ = \"(\" + keys.map((_) => \"?\").join(\",\") + \")\";\n    const values_ = data.map((_) => qs_).join(\",\");\n    const values = [];\n    data.forEach((row) => values.push(...keys.map((key) => row[key])));\n    const query = `INSERT INTO ${into} (${keys_}) VALUES ${values_} RETURNING *`;\n    return await all(db, query, values);\n}\n/**!\n * Internal function, used to convert \"where:\" conditions into sql queries.\n *\n * Example 1: The keys are expressions and they reference the value by \"?\".\n *            The keys are \"AND\"ed together.\n * ```\n *  _condition_to_sql({\n *      name: \"bob\",\n *      \"age > ?\": 31,\n *  })\n *  // { sql: \"name = ? AND age > ?\", values: [\"bob\", 31] }\n * ```\n *\n * Example 2: Use an array if you wan to \"OR\" the conditions.\n * ```\n *  _condition_to_sql([\n *      {\n *        \"name LIKE ?\": \"Frank%\",\n *        \"age > ?\": 31,\n *      },\n *      { height: 181 },\n *  ])\n *  // { sql: \"(name = ? AND age > ?) OR (height = ?)\", values: [\"Frank%\", 31, 181] }\n * ```\n */\nexport function _condition_to_sql(condition) {\n    if (Array.isArray(condition)) {\n        const results = condition.map((c) => _condition_to_sql(c));\n        const sql = results.map(({ sql }) => \"(\" + sql + \")\").join(\" OR \");\n        const values = results.map(({ values }) => values).flat();\n        return { sql, values };\n    }\n    const values = Object.values(condition);\n    const keys = Object.keys(condition).map((key) => key.includes(\"?\") ? key : key + \" = ?\");\n    const sql = keys.join(\" AND \");\n    return { sql, values };\n}\n/**!\n * Internal function, used to select multiple columns.\n *\n * Example 1: The keys are expressions that come before the \"AS\" keyword.\n * ```\n *  _select_columns_to_sql({\n *      id: \"id\",\n *      \"count(id)\": \"count\",\n *  })\n *  // \"id, count(id) AS count\"\n * ```\n *\n * Example 2: You can also use an array.\n * ```\n *  _select_columns_to_sql([\n *     \"id\",\n *     \"count(id) as count\"\n *  ])\n *  // \"id, count(id) AS count\"\n * ```\n */\nexport function _select_columns_to_sql(expr) {\n    if (Array.isArray(expr)) {\n        return expr.join(\", \");\n    }\n    if (typeof expr == \"string\") {\n        return expr;\n    }\n    return Object.entries(expr)\n        .map(([key, value]) => (key == value ? key : `${key} AS ${value}`))\n        .join(\", \");\n}\nexport function _update_columns_to_sql(expr) {\n    const sql = Object.keys(expr)\n        .map((key) => `${key} = ?`)\n        .join(\", \");\n    const values = Object.values(expr);\n    return { sql, values };\n}\n/**!\n * Query database for one or more rows.\n * See the last example on how to join tables.\n *\n * Example 1: returns every row in albums table.\n * ```\n * await query(db, { from: \"albums\" });\n * // [{id: 1, title: \"Carry On\"}, ...]\n * ```\n *\n * Example 2: returns every album that starts with \"Carry\".\n * ```\n * await query(db, {\n *   from: \"albums\",\n *   where: {\n *     \"Title LIKE ?\": \"Carry%\",\n *   },\n * });\n * // [{id: 1, title: \"Carry On\"}]\n * ```\n *\n * Example 3: A more complex query.\n *            Note that in \"where\" clauses objects mean \"AND\" and arrays mean \"OR\".\n * ```\n * await query(db, {\n *   from: \"albums\",\n *   where: [\n *     { Title: \"Transmission\" },\n *     {\n *       \"Title LIKE ?\": \"%On\",\n *       \"ArtistId > ?\": 57,\n *     },\n *   ],\n * });\n * // This would effectively run the following query:\n * // \"SELECT * FROM albums WHERE (Title = ?) OR (Title LIKE ? AND ArtisID > ?)\"\n * ```\n *\n * Example 4: A join example with select and group by.\n * ```\n * await query(db, {\n *   select: {\n *     \"a.Name\": \"Name\",\n *     \"count(*)\": \"count\",\n *   },\n *   from: \"artists a join albums b on a.ArtistId = b.ArtistId\",\n *   group_by: \"a.ArtistId\",\n *   having: { \"count > ?\": 12 },\n * });\n * ```\n */\nexport async function query(db, { select = \"*\", from, where, group_by, having, }) {\n    const sql_ = [];\n    const values_ = [];\n    sql_.push(\"SELECT\", _select_columns_to_sql(select), \"FROM\", from);\n    if (where) {\n        const { sql, values } = _condition_to_sql(where);\n        sql_.push(\"WHERE\", sql);\n        values_.push(...values);\n    }\n    if (group_by) {\n        sql_.push(\"GROUP BY\", group_by);\n        if (having) {\n            const { sql, values } = _condition_to_sql(having);\n            sql_.push(\"HAVING\", sql);\n            values_.push(...values);\n        }\n    }\n    const query_ = sql_.join(\" \") + \";\";\n    return await all(db, query_, values_);\n}\n/**!\n * Remove one or more rows from a table, and returns the deleted rows.\n *\n * Example 1: Deletes every row that matches the condition.\n * ```\n * await remove(db, {\n *  from: \"albums\",\n *  where: { title: \"Carry On\" },\n * });\n * // [{id: 1, title: \"Carry On\"}]\n * ```\n */\nexport async function remove(db, { from, where, }) {\n    const sql_ = [];\n    const values_ = [];\n    sql_.push(\"DELETE FROM\", from);\n    if (where) {\n        const { sql, values } = _condition_to_sql(where);\n        sql_.push(\"WHERE\", sql);\n        values_.push(...values);\n    }\n    sql_.push(\"RETURNING *\");\n    const query_ = sql_.join(\" \") + \";\";\n    return await all(db, query_, values_);\n}\n/**!\n * Update the matching rows to the given values.\n * Similar to other functions, update returns the affected rows.\n *\n * Example:\n * ```\n * await update(db, {\n *  table: \"albums\",\n *  where: { title: \"Carry On\" },\n *  set: { title: \"Carry On!\" },\n * });\n * // [{id: 1, title: \"Carry On!\"}]\n * ```\n */\nexport async function update(db, { table, set, where, }) {\n    const sql_ = [];\n    const values_ = [];\n    sql_.push(\"UPDATE\", table);\n    const { sql, values } = _update_columns_to_sql(set);\n    sql_.push(\"SET\", sql);\n    values_.push(...values);\n    if (where) {\n        const { sql, values } = _condition_to_sql(where);\n        sql_.push(\"WHERE\", sql);\n        values_.push(...values);\n    }\n    sql_.push(\"RETURNING *\");\n    const query_ = sql_.join(\" \") + \";\";\n    return await all(db, query_, values_);\n}\n"]}