typescript-eslint/typescript-eslint (@typescript-eslint/eslint-plugin)
### [`v7.12.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7120-2024-06-03)
[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.11.0...v7.12.0)
##### 🚀 Features
- **eslint-plugin:** \[no-useless-template-literals] rename to `no-useless-template-expression` (deprecate `no-useless-template-literals`)
- **rule-tester:** check for parsing errors in suggestion fixes
- **rule-tester:** port `checkDuplicateTestCases` from ESLint
- **eslint-plugin:** \[no-floating-promises] add option 'allowForKnownSafePromises'
##### 🩹 Fixes
- no-useless-template-expression -> no-unnecessary-template-expression
- **eslint-plugin:** \[no-unnecessary-type-assertion] combine template literal check with `const` variable check
- **eslint-plugin:** \[dot-notation] fix false positive when accessing private/protected property with optional chaining
- **eslint-plugin:** \[explicit-member-accessibility] refine report locations
- **eslint-plugin:** \[no-unnecessary-type-assertion] declares are always defined, so always check `declare`s
- **eslint-plugin:** \[prefer-literal-enum-member] allow using member it self on allowBitwiseExpressions
- **eslint-plugin:** \[return-await] clean up in-try-catch detection and make autofixes safe
- **eslint-plugin:** \[member-ordering] also TSMethodSignature can be get/set
##### ❤️ Thank You
- Abraham Guo
- Han Yeong-woo
- Joshua Chen
- Kim Sang Du
- Kirk Waiblinger
- YeonJuan
You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
typescript-eslint/typescript-eslint (@typescript-eslint/parser)
### [`v7.12.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#7120-2024-06-03)
[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.11.0...v7.12.0)
##### 🩹 Fixes
- **types:** correct typing ParserOptions
##### ❤️ Thank You
- Abraham Guo
- Han Yeong-woo
- Joshua Chen
- Kim Sang Du
- Kirk Waiblinger
- YeonJuan
You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
drizzle-team/drizzle-kit-mirror (drizzle-kit)
### [`v0.22.1`](https://togithub.com/drizzle-team/drizzle-kit-mirror/compare/v0.22.0...3ba7ffdb3be897bbc325bfa9ae1b2a6cbf4a51ee)
[Compare Source](https://togithub.com/drizzle-team/drizzle-kit-mirror/compare/v0.22.0...v0.22.1)
### [`v0.22.0`](https://togithub.com/drizzle-team/drizzle-kit-mirror/compare/v0.21.4...b34654dcc71eb4fc09d69f3645e1cf5937be54f3)
[Compare Source](https://togithub.com/drizzle-team/drizzle-kit-mirror/compare/v0.21.4...v0.22.0)
drizzle-team/drizzle-orm (drizzle-orm)
### [`v0.31.0`](https://togithub.com/drizzle-team/drizzle-orm/releases/tag/0.31.0)
[Compare Source](https://togithub.com/drizzle-team/drizzle-orm/compare/0.30.10...0.31.0)
#### Breaking changes
> Note: `drizzle-orm@0.31.0` can be used with `drizzle-kit@0.22.0` or higher. The same applies to Drizzle Kit. If you run a Drizzle Kit command, it will check and prompt you for an upgrade (if needed). You can check for Drizzle Kit updates. [below](#drizzle-kit-updates-drizzle-kit0220)
##### PostgreSQL indexes API was changed
The previous Drizzle+PostgreSQL indexes API was incorrect and was not aligned with the PostgreSQL documentation. The good thing is that it was not used in queries, and drizzle-kit didn't support all properties for indexes. This means we can now change the API to the correct one and provide full support for it in drizzle-kit
Previous API
- No way to define SQL expressions inside `.on`.
- `.using` and `.on` in our case are the same thing, so the API is incorrect here.
- `.asc()`, `.desc()`, `.nullsFirst()`, and `.nullsLast()` should be specified for each column or expression on indexes, but not on an index itself.
```ts
// Index declaration reference
index('name')
.on(table.column1, table.column2, ...) or .onOnly(table.column1, table.column2, ...)
.concurrently()
.using(sql``) // sql expression
.asc() or .desc()
.nullsFirst() or .nullsLast()
.where(sql``) // sql expression
```
Current API
```ts
// First example, with `.on()`
index('name')
.on(table.column1.asc(), table.column2.nullsFirst(), ...) or .onOnly(table.column1.desc().nullsLast(), table.column2, ...)
.concurrently()
.where(sql``)
.with({ fillfactor: '70' })
// Second Example, with `.using()`
index('name')
.using('btree', table.column1.asc(), sql`lower(${table.column2})`, table.column1.op('text_ops'))
.where(sql``) // sql expression
.with({ fillfactor: '70' })
```
#### New Features
##### 🎉 "pg_vector" extension support
> There is no specific code to create an extension inside the Drizzle schema. We assume that if you are using vector types, indexes, and queries, you have a PostgreSQL database with the `pg_vector` extension installed.
You can now specify indexes for `pg_vector` and utilize `pg_vector` functions for querying, ordering, etc.
Let's take a few examples of `pg_vector` indexes from the `pg_vector` docs and translate them to Drizzle
##### L2 distance, Inner product and Cosine distance
```ts
// CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);
// CREATE INDEX ON items USING hnsw (embedding vector_ip_ops);
// CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops);
const table = pgTable('items', {
embedding: vector('embedding', { dimensions: 3 })
}, (table) => ({
l2: index('l2_index').using('hnsw', table.embedding.op('vector_l2_ops'))
ip: index('ip_index').using('hnsw', table.embedding.op('vector_ip_ops'))
cosine: index('cosine_index').using('hnsw', table.embedding.op('vector_cosine_ops'))
}))
```
##### L1 distance, Hamming distance and Jaccard distance - added in pg_vector 0.7.0 version
```ts
// CREATE INDEX ON items USING hnsw (embedding vector_l1_ops);
// CREATE INDEX ON items USING hnsw (embedding bit_hamming_ops);
// CREATE INDEX ON items USING hnsw (embedding bit_jaccard_ops);
const table = pgTable('table', {
embedding: vector('embedding', { dimensions: 3 })
}, (table) => ({
l1: index('l1_index').using('hnsw', table.embedding.op('vector_l1_ops'))
hamming: index('hamming_index').using('hnsw', table.embedding.op('bit_hamming_ops'))
bit: index('bit_jaccard_index').using('hnsw', table.embedding.op('bit_jaccard_ops'))
}))
```
For queries, you can use predefined functions for vectors or create custom ones using the SQL template operator.
You can also use the following helpers:
```ts
import { l2Distance, l1Distance, innerProduct,
cosineDistance, hammingDistance, jaccardDistance } from 'drizzle-orm'
l2Distance(table.column, [3, 1, 2]) // table.column <-> '[3, 1, 2]'
l1Distance(table.column, [3, 1, 2]) // table.column <+> '[3, 1, 2]'
innerProduct(table.column, [3, 1, 2]) // table.column <#> '[3, 1, 2]'
cosineDistance(table.column, [3, 1, 2]) // table.column <=> '[3, 1, 2]'
hammingDistance(table.column, '101') // table.column <~> '101'
jaccardDistance(table.column, '101') // table.column <%> '101'
```
If `pg_vector` has some other functions to use, you can replicate implimentation from existing one we have. Here is how it can be done
```ts
export function l2Distance(
column: SQLWrapper | AnyColumn,
value: number[] | string[] | TypedQueryBuilder | string,
): SQL {
if (is(value, TypedQueryBuilder) || typeof value === 'string') {
return sql`${column} <-> ${value}`;
}
return sql`${column} <-> ${JSON.stringify(value)}`;
}
```
Name it as you wish and change the operator. This example allows for a numbers array, strings array, string, or even a select query. Feel free to create any other type you want or even contribute and submit a PR
##### Examples
Let's take a few examples of `pg_vector` queries from the `pg_vector` docs and translate them to Drizzle
```ts
import { l2Distance } from 'drizzle-orm';
// SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
db.select().from(items).orderBy(l2Distance(items.embedding, [3,1,2]))
// SELECT embedding <-> '[3,1,2]' AS distance FROM items;
db.select({ distance: l2Distance(items.embedding, [3,1,2]) })
// SELECT * FROM items ORDER BY embedding <-> (SELECT embedding FROM items WHERE id = 1) LIMIT 5;
const subquery = db.select({ embedding: items.embedding }).from(items).where(eq(items.id, 1));
db.select().from(items).orderBy(l2Distance(items.embedding, subquery)).limit(5)
// SELECT (embedding <#> '[3,1,2]') * -1 AS inner_product FROM items;
db.select({ innerProduct: sql`(${maxInnerProduct(items.embedding, [3,1,2])}) * -1` }).from(items)
// and more!
```
#### 🎉 New PostgreSQL types: `point`, `line`
You can now use `point` and `line` from [PostgreSQL Geometric Types](https://www.postgresql.org/docs/current/datatype-geometric.html)
Type `point` has 2 modes for mappings from the database: `tuple` and `xy`.
- `tuple` will be accepted for insert and mapped on select to a tuple. So, the database Point(1,2) will be typed as \[1,2] with drizzle.
- `xy` will be accepted for insert and mapped on select to an object with x, y coordinates. So, the database Point(1,2) will be typed as `{ x: 1, y: 2 }` with drizzle
```ts
const items = pgTable('items', {
point: point('point'),
pointObj: point('point_xy', { mode: 'xy' }),
});
```
Type `line` has 2 modes for mappings from the database: `tuple` and `abc`.
- `tuple` will be accepted for insert and mapped on select to a tuple. So, the database Line{1,2,3} will be typed as \[1,2,3] with drizzle.
- `abc` will be accepted for insert and mapped on select to an object with a, b, and c constants from the equation `Ax + By + C = 0`. So, the database Line{1,2,3} will be typed as `{ a: 1, b: 2, c: 3 }` with drizzle.
```ts
const items = pgTable('items', {
line: line('line'),
lineObj: point('line_abc', { mode: 'abc' }),
});
```
#### 🎉 Basic "postgis" extension support
> There is no specific code to create an extension inside the Drizzle schema. We assume that if you are using postgis types, indexes, and queries, you have a PostgreSQL database with the `postgis` extension installed.
`geometry` type from postgis extension:
```ts
const items = pgTable('items', {
geo: geometry('geo', { type: 'point' }),
geoObj: geometry('geo_obj', { type: 'point', mode: 'xy' }),
geoSrid: geometry('geo_options', { type: 'point', mode: 'xy', srid: 4000 }),
});
```
**mode**
Type `geometry` has 2 modes for mappings from the database: `tuple` and `xy`.
- `tuple` will be accepted for insert and mapped on select to a tuple. So, the database geometry will be typed as \[1,2] with drizzle.
- `xy` will be accepted for insert and mapped on select to an object with x, y coordinates. So, the database geometry will be typed as `{ x: 1, y: 2 }` with drizzle
**type**
The current release has a predefined type: `point`, which is the `geometry(Point)` type in the PostgreSQL PostGIS extension. You can specify any string there if you want to use some other type
### Drizzle Kit updates: `drizzle-kit@0.22.0`
> Release notes here are partially duplicated from [drizzle-kit@0.22.0](https://togithub.com/drizzle-team/drizzle-kit-mirror/releases/tag/v0.22.0)
#### New Features
##### 🎉 Support for new types
Drizzle Kit can now handle:
- `point` and `line` from PostgreSQL
- `vector` from the PostgreSQL `pg_vector` extension
- `geometry` from the PostgreSQL `PostGIS` extension
##### 🎉 New param in drizzle.config - `extensionsFilters`
The PostGIS extension creates a few internal tables in the `public` schema. This means that if you have a database with the PostGIS extension and use `push` or `introspect`, all those tables will be included in `diff` operations. In this case, you would need to specify `tablesFilter`, find all tables created by the extension, and list them in this parameter.
We have addressed this issue so that you won't need to take all these steps. Simply specify `extensionsFilters` with the name of the extension used, and Drizzle will skip all the necessary tables.
Currently, we only support the `postgis` option, but we plan to add more extensions if they create tables in the `public` schema.
The `postgis` option will skip the `geography_columns`, `geometry_columns`, and `spatial_ref_sys` tables
```ts
import { defineConfig } from 'drizzle-kit'
export default defaultConfig({
dialect: "postgresql",
extensionsFilters: ["postgis"],
})
```
#### Improvements
##### Update zod schemas for database credentials and write tests to all the positive/negative cases
- support full set of SSL params in kit config, provide types from node:tls connection
```ts
import { defineConfig } from 'drizzle-kit'
export default defaultConfig({
dialect: "postgresql",
dbCredentials: {
ssl: true, //"require" | "allow" | "prefer" | "verify-full" | options from node:tls
}
})
```
```ts
import { defineConfig } from 'drizzle-kit'
export default defaultConfig({
dialect: "mysql",
dbCredentials: {
ssl: "", // string | SslOptions (ssl options from mysql2 package)
}
})
```
##### Normilized SQLite urls for `libsql` and `better-sqlite3` drivers
Those drivers have different file path patterns, and Drizzle Kit will accept both and create a proper file path format for each
##### Updated MySQL and SQLite index-as-expression behavior
In this release MySQL and SQLite will properly map expressions into SQL query. Expressions won't be escaped in string but columns will be
```ts
export const users = sqliteTable(
'users',
{
id: integer('id').primaryKey(),
email: text('email').notNull(),
},
(table) => ({
emailUniqueIndex: uniqueIndex('emailUniqueIndex').on(sql`lower(${table.email})`),
}),
);
```
```sql
-- before
CREATE UNIQUE INDEX `emailUniqueIndex` ON `users` (`lower("users"."email")`);
-- now
CREATE UNIQUE INDEX `emailUniqueIndex` ON `users` (lower("email"));
```
#### Bug Fixes
- \[BUG]: multiple constraints not added (only the first one is generated) - [#2341](https://togithub.com/drizzle-team/drizzle-orm/issues/2341)
- Drizzle Studio: Error: Connection terminated unexpectedly - [#435](https://togithub.com/drizzle-team/drizzle-kit-mirror/issues/435)
- Unable to run sqlite migrations local - [#432](https://togithub.com/drizzle-team/drizzle-kit-mirror/issues/432)
- error: unknown option '--config' - [#423](https://togithub.com/drizzle-team/drizzle-kit-mirror/issues/423)
#### How `push` and `generate` works for indexes
##### Limitations
##### You should specify a name for your index manually if you have an index on at least one expression
Example
```ts
index().on(table.id, table.email) // will work well and name will be autogeneretaed
index('my_name').on(table.id, table.email) // will work well
// but
index().on(sql`lower(${table.email})`) // error
index('my_name').on(sql`lower(${table.email})`) // will work well
```
##### Push won't generate statements if these fields(list below) were changed in an existing index:
- expressions inside `.on()` and `.using()`
- `.where()` statements
- operator classes `.op()` on columns
If you are using `push` workflows and want to change these fields in the index, you would need to:
- Comment out the index
- Push
- Uncomment the index and change those fields
- Push again
For the `generate` command, `drizzle-kit` will be triggered by any changes in the index for any property in the new drizzle indexes API, so there are no limitations here.
webpro-nl/knip (knip)
### [`v5.17.4`](https://togithub.com/webpro-nl/knip/releases/tag/5.17.4)
[Compare Source](https://togithub.com/webpro-nl/knip/compare/5.17.3...5.17.4)
- Fix up caching ([`e75f0e9`](https://togithub.com/webpro-nl/knip/commit/e75f0e92))
- Minor refactor ([`28b2434`](https://togithub.com/webpro-nl/knip/commit/28b24349))
- Do literal text search in setRefs (closes [#595](https://togithub.com/webpro-nl/knip/issues/595) [#596](https://togithub.com/webpro-nl/knip/issues/596) [#664](https://togithub.com/webpro-nl/knip/issues/664)) ([`6e64d60`](https://togithub.com/webpro-nl/knip/commit/6e64d60c))
- Refactor to use more maps over objects, move/rename some vars ([`90fcd4c`](https://togithub.com/webpro-nl/knip/commit/90fcd4cd))
- Add polar to funding.yml ([`c4bb916`](https://togithub.com/webpro-nl/knip/commit/c4bb9167))
- Use `IMPORT_STAR` const ([`cb9ed83`](https://togithub.com/webpro-nl/knip/commit/cb9ed830))
- Remove specifier from dep graph and `SerializableImports` type ([`474a6f7`](https://togithub.com/webpro-nl/knip/commit/474a6f70))
- Add ‘xvfb-run’ as globally available binary ([#662](https://togithub.com/webpro-nl/knip/issues/662)) ([`87850ea`](https://togithub.com/webpro-nl/knip/commit/87850eac))
- Add ‘aws’ as globally available binary ([#661](https://togithub.com/webpro-nl/knip/issues/661)) ([`6fd3e46`](https://togithub.com/webpro-nl/knip/commit/6fd3e461))
lucide-icons/lucide (lucide-react)
### [`v0.383.0`](https://togithub.com/lucide-icons/lucide/releases/tag/0.383.0): New icons 0.383.0
[Compare Source](https://togithub.com/lucide-icons/lucide/compare/0.382.0...0.383.0)
#### Modified Icons 🔨
- `compass` ([#2143](https://togithub.com/lucide-icons/lucide/issues/2143)) by [@jguddas](https://togithub.com/jguddas)
- `radical` ([#2150](https://togithub.com/lucide-icons/lucide/issues/2150)) by [@jguddas](https://togithub.com/jguddas)
### [`v0.382.0`](https://togithub.com/lucide-icons/lucide/releases/tag/0.382.0): New icons 0.382.0
[Compare Source](https://togithub.com/lucide-icons/lucide/compare/0.381.0...0.382.0)
#### New icons 🎨
- `pill-bottle` ([#2174](https://togithub.com/lucide-icons/lucide/issues/2174)) by [@karsa-mistmere](https://togithub.com/karsa-mistmere)
### [`v0.381.0`](https://togithub.com/lucide-icons/lucide/releases/tag/0.381.0): New icons 0.381.0
[Compare Source](https://togithub.com/lucide-icons/lucide/compare/0.380.0...0.381.0)
#### New icons 🎨
- `lectern` ([#2171](https://togithub.com/lucide-icons/lucide/issues/2171)) by [@karsa-mistmere](https://togithub.com/karsa-mistmere)
### [`v0.380.0`](https://togithub.com/lucide-icons/lucide/releases/tag/0.380.0): New icons 0.380.0
[Compare Source](https://togithub.com/lucide-icons/lucide/compare/0.379.0...0.380.0)
#### New icons 🎨
- `section` ([#2172](https://togithub.com/lucide-icons/lucide/issues/2172)) by [@karsa-mistmere](https://togithub.com/karsa-mistmere)
cloudflare/workers-sdk (miniflare)
### [`v3.20240524.1`](https://togithub.com/cloudflare/workers-sdk/blob/HEAD/packages/miniflare/CHANGELOG.md#3202405241)
[Compare Source](https://togithub.com/cloudflare/workers-sdk/compare/miniflare@3.20240524.0...miniflare@3.20240524.1)
##### Patch Changes
- [#5921](https://togithub.com/cloudflare/workers-sdk/pull/5921) [`e0e7725`](https://togithub.com/cloudflare/workers-sdk/commit/e0e772575c079787f56615ec3d7a6a4af0633b5a) Thanks [@dario-piotrowicz](https://togithub.com/dario-piotrowicz)! - docs: add configuration section with local workerd linking to main readme
prettier/prettier (prettier)
### [`v3.3.0`](https://togithub.com/prettier/prettier/blob/HEAD/CHANGELOG.md#330)
[Compare Source](https://togithub.com/prettier/prettier/compare/3.2.5...3.3.0)
[diff](https://togithub.com/prettier/prettier/compare/3.2.5...3.3.0)
🔗 [Release Notes](https://prettier.io/blog/2024/06/01/3.3.0.html)
sergiodxa/remix-auth (remix-auth)
### [`v3.7.0`](https://togithub.com/sergiodxa/remix-auth/releases/tag/v3.7.0)
[Compare Source](https://togithub.com/sergiodxa/remix-auth/compare/v3.6.0...v3.7.0)
#### What's Changed
##### Documentation Changes
- Update example imports in README by [@vm](https://togithub.com/vm) in [https://github.com/sergiodxa/remix-auth/pull/251](https://togithub.com/sergiodxa/remix-auth/pull/251)
- Update README.md and Fix Errors handling section example by [@aliabdy](https://togithub.com/aliabdy) in [https://github.com/sergiodxa/remix-auth/pull/256](https://togithub.com/sergiodxa/remix-auth/pull/256)
- Update Types in readme code snippets by [@shyamlohar](https://togithub.com/shyamlohar) in [https://github.com/sergiodxa/remix-auth/pull/260](https://togithub.com/sergiodxa/remix-auth/pull/260)
- Fix import from remix-auth-oauth2 in README by [@penx](https://togithub.com/penx) in [https://github.com/sergiodxa/remix-auth/pull/268](https://togithub.com/sergiodxa/remix-auth/pull/268)
- Use LoaderFunctionArgs and ActionFunctionArgs instead in jsdoc by [@fzn0x](https://togithub.com/fzn0x) in [https://github.com/sergiodxa/remix-auth/pull/282](https://togithub.com/sergiodxa/remix-auth/pull/282)
- Fix JSDoc `@default` for throwOnError by [@mw10013](https://togithub.com/mw10013) in [https://github.com/sergiodxa/remix-auth/pull/264](https://togithub.com/sergiodxa/remix-auth/pull/264)
##### New Features
- Allow chaining with `Authenticator#use` by [@lifeiscontent](https://togithub.com/lifeiscontent) in [https://github.com/sergiodxa/remix-auth/pull/258](https://togithub.com/sergiodxa/remix-auth/pull/258)
- Allow logout function to receive a HeadersInit by [@reichhartd](https://togithub.com/reichhartd) in [https://github.com/sergiodxa/remix-auth/pull/271](https://togithub.com/sergiodxa/remix-auth/pull/271)
##### Other Changes
- README Remix.run docs links by [@netanelben](https://togithub.com/netanelben) in [https://github.com/sergiodxa/remix-auth/pull/262](https://togithub.com/sergiodxa/remix-auth/pull/262)
#### New Contributors
- [@vm](https://togithub.com/vm) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/251](https://togithub.com/sergiodxa/remix-auth/pull/251)
- [@aliabdy](https://togithub.com/aliabdy) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/256](https://togithub.com/sergiodxa/remix-auth/pull/256)
- [@lifeiscontent](https://togithub.com/lifeiscontent) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/258](https://togithub.com/sergiodxa/remix-auth/pull/258)
- [@shyamlohar](https://togithub.com/shyamlohar) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/260](https://togithub.com/sergiodxa/remix-auth/pull/260)
- [@netanelben](https://togithub.com/netanelben) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/262](https://togithub.com/sergiodxa/remix-auth/pull/262)
- [@penx](https://togithub.com/penx) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/268](https://togithub.com/sergiodxa/remix-auth/pull/268)
- [@fzn0x](https://togithub.com/fzn0x) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/282](https://togithub.com/sergiodxa/remix-auth/pull/282)
- [@reichhartd](https://togithub.com/reichhartd) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/271](https://togithub.com/sergiodxa/remix-auth/pull/271)
- [@mw10013](https://togithub.com/mw10013) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/264](https://togithub.com/sergiodxa/remix-auth/pull/264)
**Full Changelog**: https://github.com/sergiodxa/remix-auth/compare/v3.6.0...v3.7.0
cloudflare/workers-sdk (wrangler)
### [`v3.58.0`](https://togithub.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#3580)
[Compare Source](https://togithub.com/cloudflare/workers-sdk/compare/wrangler@3.57.2...wrangler@3.58.0)
##### Minor Changes
- [#5933](https://togithub.com/cloudflare/workers-sdk/pull/5933) [`93b98cb`](https://togithub.com/cloudflare/workers-sdk/commit/93b98cb7e2ba5f73acbc20b4a3ca9a404a37a5dc) Thanks [@WalshyDev](https://togithub.com/WalshyDev)! - feature: allow for writing authentication details per API environment. This allows someone targetting staging to have their staging auth details saved separately from production, this saves them logging in and out when switching environments.
##### Patch Changes
- [#5938](https://togithub.com/cloudflare/workers-sdk/pull/5938) [`9e4d8bc`](https://togithub.com/cloudflare/workers-sdk/commit/9e4d8bcb8811b9dc2570de26660baa4361a52749) Thanks [@threepointone](https://togithub.com/threepointone)! - fix: let "assets" in wrangler.toml be a string
The experimental "assets" field can be either a string or an object. However the type definition marks it only as an object. This is a problem because we use this to generate the json schema, which gets picked up by vscode's even better toml extension, and shows it to be an error when used with a string (even though it works fine). The fix is to simply change the type definition to add a string variant.
- [#5758](https://togithub.com/cloudflare/workers-sdk/pull/5758) [`8e5e589`](https://togithub.com/cloudflare/workers-sdk/commit/8e5e5897f0de5f8a4990f88165d7a963018a06ef) Thanks [@Jackenmen](https://togithub.com/Jackenmen)! - fix: use correct type for AI binding instead of unknown
- Updated dependencies \[[`e0e7725`](https://togithub.com/cloudflare/workers-sdk/commit/e0e772575c079787f56615ec3d7a6a4af0633b5a)]:
- miniflare@3.20240524.1
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
20.12.12
->20.14.0
7.11.0
->7.12.0
7.11.0
->7.12.0
^0.21.4
->^0.22.0
^0.30.10
->^0.31.0
5.17.3
->5.17.4
^0.379.0
->^0.383.0
3.20240524.0
->3.20240524.1
3.2.5
->3.3.0
3.6.0
->3.7.0
3.57.2
->3.58.0
Release Notes
typescript-eslint/typescript-eslint (@typescript-eslint/eslint-plugin)
### [`v7.12.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#7120-2024-06-03) [Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.11.0...v7.12.0) ##### 🚀 Features - **eslint-plugin:** \[no-useless-template-literals] rename to `no-useless-template-expression` (deprecate `no-useless-template-literals`) - **rule-tester:** check for parsing errors in suggestion fixes - **rule-tester:** port `checkDuplicateTestCases` from ESLint - **eslint-plugin:** \[no-floating-promises] add option 'allowForKnownSafePromises' ##### 🩹 Fixes - no-useless-template-expression -> no-unnecessary-template-expression - **eslint-plugin:** \[no-unnecessary-type-assertion] combine template literal check with `const` variable check - **eslint-plugin:** \[dot-notation] fix false positive when accessing private/protected property with optional chaining - **eslint-plugin:** \[explicit-member-accessibility] refine report locations - **eslint-plugin:** \[no-unnecessary-type-assertion] declares are always defined, so always check `declare`s - **eslint-plugin:** \[prefer-literal-enum-member] allow using member it self on allowBitwiseExpressions - **eslint-plugin:** \[return-await] clean up in-try-catch detection and make autofixes safe - **eslint-plugin:** \[member-ordering] also TSMethodSignature can be get/set ##### ❤️ Thank You - Abraham Guo - Han Yeong-woo - Joshua Chen - Kim Sang Du - Kirk Waiblinger - YeonJuan You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.typescript-eslint/typescript-eslint (@typescript-eslint/parser)
### [`v7.12.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#7120-2024-06-03) [Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.11.0...v7.12.0) ##### 🩹 Fixes - **types:** correct typing ParserOptions ##### ❤️ Thank You - Abraham Guo - Han Yeong-woo - Joshua Chen - Kim Sang Du - Kirk Waiblinger - YeonJuan You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.drizzle-team/drizzle-kit-mirror (drizzle-kit)
### [`v0.22.1`](https://togithub.com/drizzle-team/drizzle-kit-mirror/compare/v0.22.0...3ba7ffdb3be897bbc325bfa9ae1b2a6cbf4a51ee) [Compare Source](https://togithub.com/drizzle-team/drizzle-kit-mirror/compare/v0.22.0...v0.22.1) ### [`v0.22.0`](https://togithub.com/drizzle-team/drizzle-kit-mirror/compare/v0.21.4...b34654dcc71eb4fc09d69f3645e1cf5937be54f3) [Compare Source](https://togithub.com/drizzle-team/drizzle-kit-mirror/compare/v0.21.4...v0.22.0)drizzle-team/drizzle-orm (drizzle-orm)
### [`v0.31.0`](https://togithub.com/drizzle-team/drizzle-orm/releases/tag/0.31.0) [Compare Source](https://togithub.com/drizzle-team/drizzle-orm/compare/0.30.10...0.31.0) #### Breaking changes > Note: `drizzle-orm@0.31.0` can be used with `drizzle-kit@0.22.0` or higher. The same applies to Drizzle Kit. If you run a Drizzle Kit command, it will check and prompt you for an upgrade (if needed). You can check for Drizzle Kit updates. [below](#drizzle-kit-updates-drizzle-kit0220) ##### PostgreSQL indexes API was changed The previous Drizzle+PostgreSQL indexes API was incorrect and was not aligned with the PostgreSQL documentation. The good thing is that it was not used in queries, and drizzle-kit didn't support all properties for indexes. This means we can now change the API to the correct one and provide full support for it in drizzle-kit Previous API - No way to define SQL expressions inside `.on`. - `.using` and `.on` in our case are the same thing, so the API is incorrect here. - `.asc()`, `.desc()`, `.nullsFirst()`, and `.nullsLast()` should be specified for each column or expression on indexes, but not on an index itself. ```ts // Index declaration reference index('name') .on(table.column1, table.column2, ...) or .onOnly(table.column1, table.column2, ...) .concurrently() .using(sql``) // sql expression .asc() or .desc() .nullsFirst() or .nullsLast() .where(sql``) // sql expression ``` Current API ```ts // First example, with `.on()` index('name') .on(table.column1.asc(), table.column2.nullsFirst(), ...) or .onOnly(table.column1.desc().nullsLast(), table.column2, ...) .concurrently() .where(sql``) .with({ fillfactor: '70' }) // Second Example, with `.using()` index('name') .using('btree', table.column1.asc(), sql`lower(${table.column2})`, table.column1.op('text_ops')) .where(sql``) // sql expression .with({ fillfactor: '70' }) ``` #### New Features ##### 🎉 "pg_vector" extension support > There is no specific code to create an extension inside the Drizzle schema. We assume that if you are using vector types, indexes, and queries, you have a PostgreSQL database with the `pg_vector` extension installed. You can now specify indexes for `pg_vector` and utilize `pg_vector` functions for querying, ordering, etc. Let's take a few examples of `pg_vector` indexes from the `pg_vector` docs and translate them to Drizzle ##### L2 distance, Inner product and Cosine distance ```ts // CREATE INDEX ON items USING hnsw (embedding vector_l2_ops); // CREATE INDEX ON items USING hnsw (embedding vector_ip_ops); // CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops); const table = pgTable('items', { embedding: vector('embedding', { dimensions: 3 }) }, (table) => ({ l2: index('l2_index').using('hnsw', table.embedding.op('vector_l2_ops')) ip: index('ip_index').using('hnsw', table.embedding.op('vector_ip_ops')) cosine: index('cosine_index').using('hnsw', table.embedding.op('vector_cosine_ops')) })) ``` ##### L1 distance, Hamming distance and Jaccard distance - added in pg_vector 0.7.0 version ```ts // CREATE INDEX ON items USING hnsw (embedding vector_l1_ops); // CREATE INDEX ON items USING hnsw (embedding bit_hamming_ops); // CREATE INDEX ON items USING hnsw (embedding bit_jaccard_ops); const table = pgTable('table', { embedding: vector('embedding', { dimensions: 3 }) }, (table) => ({ l1: index('l1_index').using('hnsw', table.embedding.op('vector_l1_ops')) hamming: index('hamming_index').using('hnsw', table.embedding.op('bit_hamming_ops')) bit: index('bit_jaccard_index').using('hnsw', table.embedding.op('bit_jaccard_ops')) })) ``` For queries, you can use predefined functions for vectors or create custom ones using the SQL template operator. You can also use the following helpers: ```ts import { l2Distance, l1Distance, innerProduct, cosineDistance, hammingDistance, jaccardDistance } from 'drizzle-orm' l2Distance(table.column, [3, 1, 2]) // table.column <-> '[3, 1, 2]' l1Distance(table.column, [3, 1, 2]) // table.column <+> '[3, 1, 2]' innerProduct(table.column, [3, 1, 2]) // table.column <#> '[3, 1, 2]' cosineDistance(table.column, [3, 1, 2]) // table.column <=> '[3, 1, 2]' hammingDistance(table.column, '101') // table.column <~> '101' jaccardDistance(table.column, '101') // table.column <%> '101' ``` If `pg_vector` has some other functions to use, you can replicate implimentation from existing one we have. Here is how it can be done ```ts export function l2Distance( column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilderwebpro-nl/knip (knip)
### [`v5.17.4`](https://togithub.com/webpro-nl/knip/releases/tag/5.17.4) [Compare Source](https://togithub.com/webpro-nl/knip/compare/5.17.3...5.17.4) - Fix up caching ([`e75f0e9`](https://togithub.com/webpro-nl/knip/commit/e75f0e92)) - Minor refactor ([`28b2434`](https://togithub.com/webpro-nl/knip/commit/28b24349)) - Do literal text search in setRefs (closes [#595](https://togithub.com/webpro-nl/knip/issues/595) [#596](https://togithub.com/webpro-nl/knip/issues/596) [#664](https://togithub.com/webpro-nl/knip/issues/664)) ([`6e64d60`](https://togithub.com/webpro-nl/knip/commit/6e64d60c)) - Refactor to use more maps over objects, move/rename some vars ([`90fcd4c`](https://togithub.com/webpro-nl/knip/commit/90fcd4cd)) - Add polar to funding.yml ([`c4bb916`](https://togithub.com/webpro-nl/knip/commit/c4bb9167)) - Use `IMPORT_STAR` const ([`cb9ed83`](https://togithub.com/webpro-nl/knip/commit/cb9ed830)) - Remove specifier from dep graph and `SerializableImports` type ([`474a6f7`](https://togithub.com/webpro-nl/knip/commit/474a6f70)) - Add ‘xvfb-run’ as globally available binary ([#662](https://togithub.com/webpro-nl/knip/issues/662)) ([`87850ea`](https://togithub.com/webpro-nl/knip/commit/87850eac)) - Add ‘aws’ as globally available binary ([#661](https://togithub.com/webpro-nl/knip/issues/661)) ([`6fd3e46`](https://togithub.com/webpro-nl/knip/commit/6fd3e461))lucide-icons/lucide (lucide-react)
### [`v0.383.0`](https://togithub.com/lucide-icons/lucide/releases/tag/0.383.0): New icons 0.383.0 [Compare Source](https://togithub.com/lucide-icons/lucide/compare/0.382.0...0.383.0) #### Modified Icons 🔨 - `compass` ([#2143](https://togithub.com/lucide-icons/lucide/issues/2143)) by [@jguddas](https://togithub.com/jguddas) - `radical` ([#2150](https://togithub.com/lucide-icons/lucide/issues/2150)) by [@jguddas](https://togithub.com/jguddas) ### [`v0.382.0`](https://togithub.com/lucide-icons/lucide/releases/tag/0.382.0): New icons 0.382.0 [Compare Source](https://togithub.com/lucide-icons/lucide/compare/0.381.0...0.382.0) #### New icons 🎨 - `pill-bottle` ([#2174](https://togithub.com/lucide-icons/lucide/issues/2174)) by [@karsa-mistmere](https://togithub.com/karsa-mistmere) ### [`v0.381.0`](https://togithub.com/lucide-icons/lucide/releases/tag/0.381.0): New icons 0.381.0 [Compare Source](https://togithub.com/lucide-icons/lucide/compare/0.380.0...0.381.0) #### New icons 🎨 - `lectern` ([#2171](https://togithub.com/lucide-icons/lucide/issues/2171)) by [@karsa-mistmere](https://togithub.com/karsa-mistmere) ### [`v0.380.0`](https://togithub.com/lucide-icons/lucide/releases/tag/0.380.0): New icons 0.380.0 [Compare Source](https://togithub.com/lucide-icons/lucide/compare/0.379.0...0.380.0) #### New icons 🎨 - `section` ([#2172](https://togithub.com/lucide-icons/lucide/issues/2172)) by [@karsa-mistmere](https://togithub.com/karsa-mistmere)cloudflare/workers-sdk (miniflare)
### [`v3.20240524.1`](https://togithub.com/cloudflare/workers-sdk/blob/HEAD/packages/miniflare/CHANGELOG.md#3202405241) [Compare Source](https://togithub.com/cloudflare/workers-sdk/compare/miniflare@3.20240524.0...miniflare@3.20240524.1) ##### Patch Changes - [#5921](https://togithub.com/cloudflare/workers-sdk/pull/5921) [`e0e7725`](https://togithub.com/cloudflare/workers-sdk/commit/e0e772575c079787f56615ec3d7a6a4af0633b5a) Thanks [@dario-piotrowicz](https://togithub.com/dario-piotrowicz)! - docs: add configuration section with local workerd linking to main readmeprettier/prettier (prettier)
### [`v3.3.0`](https://togithub.com/prettier/prettier/blob/HEAD/CHANGELOG.md#330) [Compare Source](https://togithub.com/prettier/prettier/compare/3.2.5...3.3.0) [diff](https://togithub.com/prettier/prettier/compare/3.2.5...3.3.0) 🔗 [Release Notes](https://prettier.io/blog/2024/06/01/3.3.0.html)sergiodxa/remix-auth (remix-auth)
### [`v3.7.0`](https://togithub.com/sergiodxa/remix-auth/releases/tag/v3.7.0) [Compare Source](https://togithub.com/sergiodxa/remix-auth/compare/v3.6.0...v3.7.0) #### What's Changed ##### Documentation Changes - Update example imports in README by [@vm](https://togithub.com/vm) in [https://github.com/sergiodxa/remix-auth/pull/251](https://togithub.com/sergiodxa/remix-auth/pull/251) - Update README.md and Fix Errors handling section example by [@aliabdy](https://togithub.com/aliabdy) in [https://github.com/sergiodxa/remix-auth/pull/256](https://togithub.com/sergiodxa/remix-auth/pull/256) - Update Types in readme code snippets by [@shyamlohar](https://togithub.com/shyamlohar) in [https://github.com/sergiodxa/remix-auth/pull/260](https://togithub.com/sergiodxa/remix-auth/pull/260) - Fix import from remix-auth-oauth2 in README by [@penx](https://togithub.com/penx) in [https://github.com/sergiodxa/remix-auth/pull/268](https://togithub.com/sergiodxa/remix-auth/pull/268) - Use LoaderFunctionArgs and ActionFunctionArgs instead in jsdoc by [@fzn0x](https://togithub.com/fzn0x) in [https://github.com/sergiodxa/remix-auth/pull/282](https://togithub.com/sergiodxa/remix-auth/pull/282) - Fix JSDoc `@default` for throwOnError by [@mw10013](https://togithub.com/mw10013) in [https://github.com/sergiodxa/remix-auth/pull/264](https://togithub.com/sergiodxa/remix-auth/pull/264) ##### New Features - Allow chaining with `Authenticator#use` by [@lifeiscontent](https://togithub.com/lifeiscontent) in [https://github.com/sergiodxa/remix-auth/pull/258](https://togithub.com/sergiodxa/remix-auth/pull/258) - Allow logout function to receive a HeadersInit by [@reichhartd](https://togithub.com/reichhartd) in [https://github.com/sergiodxa/remix-auth/pull/271](https://togithub.com/sergiodxa/remix-auth/pull/271) ##### Other Changes - README Remix.run docs links by [@netanelben](https://togithub.com/netanelben) in [https://github.com/sergiodxa/remix-auth/pull/262](https://togithub.com/sergiodxa/remix-auth/pull/262) #### New Contributors - [@vm](https://togithub.com/vm) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/251](https://togithub.com/sergiodxa/remix-auth/pull/251) - [@aliabdy](https://togithub.com/aliabdy) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/256](https://togithub.com/sergiodxa/remix-auth/pull/256) - [@lifeiscontent](https://togithub.com/lifeiscontent) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/258](https://togithub.com/sergiodxa/remix-auth/pull/258) - [@shyamlohar](https://togithub.com/shyamlohar) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/260](https://togithub.com/sergiodxa/remix-auth/pull/260) - [@netanelben](https://togithub.com/netanelben) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/262](https://togithub.com/sergiodxa/remix-auth/pull/262) - [@penx](https://togithub.com/penx) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/268](https://togithub.com/sergiodxa/remix-auth/pull/268) - [@fzn0x](https://togithub.com/fzn0x) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/282](https://togithub.com/sergiodxa/remix-auth/pull/282) - [@reichhartd](https://togithub.com/reichhartd) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/271](https://togithub.com/sergiodxa/remix-auth/pull/271) - [@mw10013](https://togithub.com/mw10013) made their first contribution in [https://github.com/sergiodxa/remix-auth/pull/264](https://togithub.com/sergiodxa/remix-auth/pull/264) **Full Changelog**: https://github.com/sergiodxa/remix-auth/compare/v3.6.0...v3.7.0cloudflare/workers-sdk (wrangler)
### [`v3.58.0`](https://togithub.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#3580) [Compare Source](https://togithub.com/cloudflare/workers-sdk/compare/wrangler@3.57.2...wrangler@3.58.0) ##### Minor Changes - [#5933](https://togithub.com/cloudflare/workers-sdk/pull/5933) [`93b98cb`](https://togithub.com/cloudflare/workers-sdk/commit/93b98cb7e2ba5f73acbc20b4a3ca9a404a37a5dc) Thanks [@WalshyDev](https://togithub.com/WalshyDev)! - feature: allow for writing authentication details per API environment. This allows someone targetting staging to have their staging auth details saved separately from production, this saves them logging in and out when switching environments. ##### Patch Changes - [#5938](https://togithub.com/cloudflare/workers-sdk/pull/5938) [`9e4d8bc`](https://togithub.com/cloudflare/workers-sdk/commit/9e4d8bcb8811b9dc2570de26660baa4361a52749) Thanks [@threepointone](https://togithub.com/threepointone)! - fix: let "assets" in wrangler.toml be a string The experimental "assets" field can be either a string or an object. However the type definition marks it only as an object. This is a problem because we use this to generate the json schema, which gets picked up by vscode's even better toml extension, and shows it to be an error when used with a string (even though it works fine). The fix is to simply change the type definition to add a string variant. - [#5758](https://togithub.com/cloudflare/workers-sdk/pull/5758) [`8e5e589`](https://togithub.com/cloudflare/workers-sdk/commit/8e5e5897f0de5f8a4990f88165d7a963018a06ef) Thanks [@Jackenmen](https://togithub.com/Jackenmen)! - fix: use correct type for AI binding instead of unknown - Updated dependencies \[[`e0e7725`](https://togithub.com/cloudflare/workers-sdk/commit/e0e772575c079787f56615ec3d7a6a4af0633b5a)]: - miniflare@3.20240524.1Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.