2023-10-25 10:40:37 -05:00
|
|
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
2023-09-12 12:52:22 -05:00
|
|
|
const { builtinModules } = require('module');
|
2023-09-12 12:50:06 -05:00
|
|
|
|
2023-10-25 10:40:37 -05:00
|
|
|
/** @type {import("@types/eslint").Linter.Config} */
|
2021-03-16 13:37:45 -05:00
|
|
|
module.exports = {
|
2023-07-03 07:59:43 -05:00
|
|
|
extends: [
|
|
|
|
'plugin:@typescript-eslint/recommended-type-checked',
|
|
|
|
'plugin:@typescript-eslint/stylistic-type-checked',
|
|
|
|
'prettier',
|
2024-02-07 07:43:19 -05:00
|
|
|
'plugin:regexp/recommended',
|
2023-07-03 07:59:43 -05:00
|
|
|
],
|
2021-03-16 13:37:45 -05:00
|
|
|
parser: '@typescript-eslint/parser',
|
2023-07-03 07:59:43 -05:00
|
|
|
parserOptions: {
|
|
|
|
project: ['./packages/*/tsconfig.json', './tsconfig.eslint.json'],
|
|
|
|
tsconfigRootDir: __dirname,
|
|
|
|
},
|
2024-02-07 07:43:19 -05:00
|
|
|
plugins: ['@typescript-eslint', 'prettier', 'no-only-tests', 'regexp'],
|
2021-03-16 13:37:45 -05:00
|
|
|
rules: {
|
2023-07-03 07:59:43 -05:00
|
|
|
// These off/configured-differently-by-default rules fit well for us
|
2024-01-30 03:35:08 -05:00
|
|
|
'@typescript-eslint/switch-exhaustiveness-check': 'error',
|
2023-07-03 07:59:43 -05:00
|
|
|
'@typescript-eslint/array-type': ['error', { default: 'array-simple' }],
|
2023-09-05 13:03:21 -05:00
|
|
|
'@typescript-eslint/no-unused-vars': [
|
2023-10-19 13:09:55 -05:00
|
|
|
'warn',
|
2023-10-25 07:21:38 -05:00
|
|
|
{
|
|
|
|
argsIgnorePattern: '^_',
|
|
|
|
varsIgnorePattern: '^_',
|
|
|
|
caughtErrorsIgnorePattern: '^_',
|
|
|
|
ignoreRestSiblings: true,
|
|
|
|
},
|
2023-09-05 13:03:21 -05:00
|
|
|
],
|
2023-07-03 07:59:43 -05:00
|
|
|
'no-only-tests/no-only-tests': 'error',
|
|
|
|
'@typescript-eslint/no-shadow': ['error'],
|
|
|
|
'no-console': 'warn',
|
|
|
|
|
|
|
|
// Todo: do we want these?
|
|
|
|
'@typescript-eslint/array-type': 'off',
|
2021-04-21 11:14:44 -05:00
|
|
|
'@typescript-eslint/ban-ts-comment': 'off',
|
2023-07-03 07:59:43 -05:00
|
|
|
'@typescript-eslint/class-literal-property-style': 'off',
|
|
|
|
'@typescript-eslint/consistent-indexed-object-style': 'off',
|
|
|
|
'@typescript-eslint/consistent-type-definitions': 'off',
|
|
|
|
'@typescript-eslint/dot-notation': 'off',
|
|
|
|
'@typescript-eslint/no-base-to-string': 'off',
|
2021-04-01 11:25:28 -05:00
|
|
|
'@typescript-eslint/no-empty-function': 'off',
|
2023-07-03 07:59:43 -05:00
|
|
|
'@typescript-eslint/no-floating-promises': 'off',
|
|
|
|
'@typescript-eslint/no-misused-promises': 'off',
|
|
|
|
'@typescript-eslint/no-redundant-type-constituents': 'off',
|
2022-01-06 16:32:24 -05:00
|
|
|
'@typescript-eslint/no-this-alias': 'off',
|
2023-07-03 07:59:43 -05:00
|
|
|
'@typescript-eslint/no-unsafe-argument': 'off',
|
|
|
|
'@typescript-eslint/no-unsafe-assignment': 'off',
|
|
|
|
'@typescript-eslint/no-unsafe-call': 'off',
|
|
|
|
'@typescript-eslint/no-unsafe-member-access': 'off',
|
|
|
|
'@typescript-eslint/no-unsafe-return': 'off',
|
|
|
|
'@typescript-eslint/prefer-nullish-coalescing': 'off',
|
2023-07-12 02:11:46 -05:00
|
|
|
'@typescript-eslint/prefer-optional-chain': 'off',
|
2023-07-03 07:59:43 -05:00
|
|
|
'@typescript-eslint/prefer-string-starts-ends-with': 'off',
|
|
|
|
'@typescript-eslint/require-await': 'off',
|
|
|
|
'@typescript-eslint/restrict-plus-operands': 'off',
|
|
|
|
'@typescript-eslint/restrict-template-expressions': 'off',
|
|
|
|
'@typescript-eslint/sort-type-constituents': 'off',
|
|
|
|
'@typescript-eslint/unbound-method': 'off',
|
2023-07-12 02:14:48 -05:00
|
|
|
'@typescript-eslint/no-explicit-any': 'off',
|
2023-07-03 07:59:43 -05:00
|
|
|
|
2023-12-04 11:56:32 -05:00
|
|
|
// Enforce separate type imports for type-only imports to avoid bundling unneeded code
|
|
|
|
'@typescript-eslint/consistent-type-imports': [
|
|
|
|
'error',
|
|
|
|
{
|
|
|
|
prefer: 'type-imports',
|
|
|
|
fixStyle: 'separate-type-imports',
|
|
|
|
disallowTypeAnnotations: false,
|
|
|
|
},
|
|
|
|
],
|
|
|
|
|
2023-07-03 07:59:43 -05:00
|
|
|
// These rules enabled by the preset configs don't work well for us
|
|
|
|
'@typescript-eslint/await-thenable': 'off',
|
2021-03-16 13:37:45 -05:00
|
|
|
'prefer-const': 'off',
|
2024-02-07 07:43:19 -05:00
|
|
|
|
|
|
|
// In some cases, using explicit letter-casing is more performant than the `i` flag
|
|
|
|
'regexp/use-ignore-case': 'off',
|
2021-03-16 13:37:45 -05:00
|
|
|
},
|
2022-08-23 14:55:03 -05:00
|
|
|
overrides: [
|
2023-09-12 12:52:22 -05:00
|
|
|
{
|
2023-09-12 12:50:06 -05:00
|
|
|
// Ensure Node builtins aren't included in Astro's server runtime
|
|
|
|
files: ['packages/astro/src/runtime/**/*.ts'],
|
|
|
|
rules: {
|
2023-09-12 12:52:22 -05:00
|
|
|
'no-restricted-imports': [
|
|
|
|
'error',
|
|
|
|
{
|
|
|
|
paths: [...builtinModules],
|
|
|
|
patterns: ['node:*'],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
2023-09-12 12:50:06 -05:00
|
|
|
},
|
2023-10-25 10:40:37 -05:00
|
|
|
{
|
|
|
|
files: ['packages/astro/src/runtime/client/**/*.ts'],
|
|
|
|
env: {
|
|
|
|
browser: true,
|
|
|
|
},
|
|
|
|
},
|
2022-08-23 14:55:03 -05:00
|
|
|
{
|
2022-09-13 16:23:59 -05:00
|
|
|
files: ['packages/**/test/*.js', 'packages/**/*.js'],
|
2022-08-23 14:55:03 -05:00
|
|
|
env: {
|
|
|
|
mocha: true,
|
|
|
|
},
|
|
|
|
globals: {
|
|
|
|
globalThis: false, // false means read-only
|
|
|
|
},
|
|
|
|
rules: {
|
|
|
|
'no-console': 'off',
|
|
|
|
},
|
|
|
|
},
|
2022-10-03 10:37:21 -05:00
|
|
|
{
|
|
|
|
files: ['packages/integrations/**/*.ts'],
|
|
|
|
rules: {
|
|
|
|
'no-console': ['error', { allow: ['warn', 'error', 'info', 'debug'] }],
|
|
|
|
},
|
|
|
|
},
|
2023-03-01 03:46:06 -05:00
|
|
|
{
|
|
|
|
files: ['benchmark/**/*.js'],
|
|
|
|
rules: {
|
2023-07-03 07:59:43 -05:00
|
|
|
'@typescript-eslint/no-unused-vars': 'off',
|
2023-03-01 03:46:06 -05:00
|
|
|
'no-console': 'off',
|
|
|
|
},
|
|
|
|
},
|
Introduce the db integration (prerelease) (#10201)
* Initial DB migration code
* chore: update package.json
* chore: update lockfile
* feat: add db as top-level config value
* Small package change
* Add a very basic test
* deps: remove unused
* chore: astro/db scripts, exports, deps
* chore: set tsconfig to monorepo defaults
* feat: MVP to use libsql in dev
* fix: test fixture paths
* fix: test file paths
* chore: remove CLI tests
* fix: add astro-scripts to db
* fix: package.json merge
* fix: load seed file separately for build
* feat: create db on filesystem for build
* fix: ul test. It passes now!
* Squashed commit of the following:
commit acdddd728c56f25e42975db7f367ab8a998e8c41
Author: Princesseuh <3019731+Princesseuh@users.noreply.github.com>
Date: Wed Jan 10 14:06:16 2024 -0500
fix: proper type augment for the config
commit b41ca9aacf291d1e5f0a27b6d6339ce4fc608ec3
Author: Nate Moore <nate@astro.build>
Date: Tue Jan 9 14:33:42 2024 -0600
wip: type augmentation
* feat: data() fn with basic type safety
* wip: update from seed file to data()
* fix: bad collectionSchema data type
* refactor: move dev to use filesystem to run seed at right time
* chore: remove seed file logic
* docs: add basic README
* CLI sync command
* Runtime checking of writable
* docs: add join example
* Implement defineWritableCollection
* feat: use studio connection for studio builds
* fix: add defineWritableCollection export
* refactor: use getTableName() util
* feat(db): add support for pass-through `astro db` command
* chore: add error map
* fix: add drizzle import
* refactor: studio -> db cli
* feat: add ticketing example
* fix: bad types in astro config
* fix: remove invalid `data()` on writable collection
* fix: vite warning on load-astro-config
* wip: add seeding for readable collections (nonstable ids!)
* merge migration work into branch
* cleanup migration commands
* migrate seed data to new db push command
* add migrations table to db
* fix remote db bugs
* fix: warn writable collections when studio false
* chore: delete README contents (now on Notion)
* chore: remove blank README
* chore: add dev dependency on db
* Removed unused deps
* 0.1.0
* Add config-augment.d.ts to published artifacts"
* Fixes merge issues with main
* fix: support promise response from data()
* feat: basic glob fixture
* Add a main field
* Give a help message when no db command is provided
* feat: `db push --token` for GitHub CI secrets
* fix getPackage for db package
* 0.1.2
* wip: build a table type
* chore: update lockfile
* chore: temporarily remove `Table` type
* feat: better Table object for type inference
* format
* add primaryKey support
* improve snapshot parsing support
* cleanup primary key support, db push
* add simple db shell
* cleanup old copy paste code
* feat: scrappy global data() prototype
* feat(test): recipes example
* fix: use Extract to narrow keyof to strings
* 0.1.3
* Create a runtime version of createRemoteDatabaseClient
* 0.1.4
* Grab the dbUrl from the environment
* 0.1.5
* Expose the database to the build output
* 0.1.6
* 0.1.7
* 0.1.15
* wip: data() -> set() concept
* fix: just infer insert keys for now
* refactor: rewrite to injected set() function
* deps: chokidar, drizzle
* feat: glob support with { db, table } signature
* chore: move basics to new data set
* refactor: set -> seed
* feat: expose Model.table
* refactor: clean up types
* feat: migrations now working!
* upgrade @libsql/client
* format
* expose relevant types
* 0.1.16
* feat: config design
* feat: add indexes from collectionToTable
* feat: add indexes to setupDbTables
* fix: remove unique constraint on recipeId
* Use an import statement to grab the database file
* 0.1.17
* Remove unused import
* Rename to ?fileurl
* 0.1.18
* feat: index migrations
* move migration logic to turso, add back sync support
* feat: add queries unit tests and fix related bugs
* refactor: move field queries to field-queries.test
* feat: index query tests
* refactor: reorganize the rats nest of files
* Make the DB_URL be root relative
* Upgrade to latest libsql
* 0.1.19
* 0.1.20
* Make work in webcontainer
* 0.1.22
* Remove content database from the static build
* 0.1.23
* chore: remove `optional: true` from pk
* chore: disable console linting for CLI
* fix: remove `id` column from Table type
* chore: remove `AstroId` type
* fix(ex): add `id` col to ticketing
* 0.2.0
* 0.2.1
* add keywords
* 0.2.2
* feat: API shape
* feat: FINALLY collection and name attached
* refactor: move to arrow function signature
* fix: foreignKeys references signature
* chore: unused imports
* feat: add foreignkeys to create table
* chore: lint
* chore: enable foreign keys in local mode only
* refactor: objShallowEqual -> deep diff
* fix: correct `hasDefault` inference
* fix: correct type Config reference
* fix: respect primaryKey from hasDefault
* fix: mark data keys as optional until we have type inference
* improve conflict and dataloss handling
- moved prompts to db push
- moved prompt logic out of lower-level functions
- improved logic overall
- improved user-facing prompt messages
* improve error messaging around studio config missing
* make it more clear when remove vs. local db is in use
* fix bug in prompt logic
* feat: better field.x() types
* feat: better seed() types
* chore: remove `as any` on seed values
* feat: good enough return type on seed :)
* feat: defineData()
* fix: add back promptResponse injection
* fix: use schema.parse to resolve dates
* fix: correctly respect primary key on INSERT INTO
* add short-lived db tokens
* add help output
* add better token error logging
* fix studio tests
* add shortcut link command from studio web ui
* Add support for SQL defaults
You can now use sql`CURRENT_TIMESTAMP`, `NOW`, and a couple of other
helpers, to set defaults.
* chore: todo
* feat: ignore `optional` and `default` when pk is present
* refactor: type `false` instead of type `never`
* feat: prevent `optional` on text pk
* fix db URL import for windows
* fix: add back textField multiline
* fix: remove explicit AUTOINCREMENT on int pk
* feat(db-cli): clean up CLI logging, support --json flag for `astro db verify`, extract shared logic to a utility
* prepare to run seed on all db push commands
* chore: expose setMeta for unit testing
* feat(test): reference add and remove tests
* feat: add references checks to migratiosn
* feat: remove useForeignKey checks
* feat: add pragma when pushing migrations
* feat(test): foreignKeys
* fix: transform collection config to be JSON serializable
* refactor: _setMeta -> preprocess for `table`
* refactor: reference tests
* chore: remove console log
* fix: handle serialized SQL object correctly
* refactor: store raw sql instead
* seed on every push
* Move field schema only a `schema` object
* Fix references test
* 0.3.0
* add default URLs to db package
* 0.3.1
* Fix input types
* fix: primaryKey type check
* 0.3.2
* fix: respect default in table types
* fix: avoid dropping tables on production seed
* fix: escape name on drop table
* feat: allow verify to mock migration file
* Handle unauthorized linking
* Fix verbiage of unauthorized link warning
* Add some color to the unauthorized message
* 0.3.3
* Improve the unauthorized error output
* 0.3.4
* fix: better error message
* Seed the Themes in build too
* Push skipped test
* chore: remove dead isJsonSerializable check
* fix: use `dateType` for dates (oops)
* refactor: clarify date coerce comment
* refactor: remove unused coerce
* chore: unskip date test
* feat: seed -> seedReturning
* refactor: throw when seeding writable in prod
* Add unsafeWritable option
* refactor: use FieldsConfig for Table generic
* chore: lint
* fix: use z.input for AstroConfigWithDB type
* fix: add defaults for boolean config options
* Support new CLI command structure
* Allow writable in the tests
* fix: handle defaults for safe type changes
* refactor: avoid selecting ['schema'] on input types
* 0.3.5
* Rename field->column, collection->table
* Rename collections->tables
* rename to defineReadableTable
* deps: upgrade ticketing-example
* fix: stray console.log
* deps: bump preact again
* chore: preact->react
* fix: parse params.event as number
* fix: correct event references
* Allow integrations to define schema
* fix: file-url plugin failure on repeated generateBundle() runs
* update url
* Cleanup
* Linting
* fix windows file permission issue
When runnng `astro dev`, the watcher would close trying to delete the `content.db` file due to a file permission error. This change makes the local DB client a disposable to allow cleanup after usage.
* Formatting
* "fix" Symbol.dispose usage
---------
Co-authored-by: Nate Moore <nate@astro.build>
Co-authored-by: bholmesdev <hey@bholmes.dev>
Co-authored-by: Fred K. Schott <fkschott@gmail.com>
Co-authored-by: itsMapleLeaf <19603573+itsMapleLeaf@users.noreply.github.com>
2024-02-22 14:50:44 -05:00
|
|
|
{
|
|
|
|
files: ['packages/db/**/cli/**/*.ts'],
|
|
|
|
rules: {
|
|
|
|
'no-console': 'off',
|
|
|
|
},
|
|
|
|
},
|
2024-01-09 15:56:28 -05:00
|
|
|
{
|
|
|
|
files: ['packages/astro/src/core/errors/errors-data.ts'],
|
|
|
|
rules: {
|
|
|
|
// This file is used for docs generation, as such the code need to be in a certain format, we can somewhat ensure this with these rules
|
|
|
|
'object-shorthand': ['error', 'methods', { avoidExplicitReturnArrows: true }],
|
|
|
|
'arrow-body-style': ['error', 'never'],
|
|
|
|
},
|
|
|
|
},
|
2024-03-27 08:04:39 -05:00
|
|
|
|
|
|
|
{
|
|
|
|
files: ['packages/db/src/runtime/**/*.ts'],
|
|
|
|
rules: {
|
|
|
|
'no-restricted-imports': 'off',
|
|
|
|
'@typescript-eslint/no-restricted-imports': [
|
|
|
|
'error',
|
|
|
|
{
|
|
|
|
patterns: [
|
|
|
|
{
|
|
|
|
group: ['../core/*'],
|
|
|
|
allowTypeImports: true,
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
2022-08-23 14:55:03 -05:00
|
|
|
],
|
2021-03-16 13:37:45 -05:00
|
|
|
};
|