gitextract_74g3z0fs/ ├── .codeclimate.yml ├── .dockerignore ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── actions/ │ │ ├── docker-build-push/ │ │ │ └── action.yml │ │ └── pnpm-install/ │ │ └── action.yml │ └── workflows/ │ ├── docker-push.yml │ ├── integration-tests.yml │ ├── issue-id-check.yml │ ├── linting.yml │ ├── manual-preview.yml │ ├── preview-cleanup.yml │ ├── templates/ │ │ └── preview-template.yaml │ ├── trigger-sync-to-ee.yml │ ├── unit-tests.yml │ ├── v2-benchmark-tests.yml │ └── v2-core-tests.yml ├── .gitignore ├── .gitpod.yml ├── .husky/ │ ├── commit-msg │ ├── install.mjs │ └── pre-commit ├── .idea/ │ ├── modules.xml │ └── teable.iml ├── .ncurc.yml ├── .npmrc ├── .prettierignore ├── .prettierrc.js ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── AGPL_LICENSE ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── agents.md ├── apps/ │ ├── nestjs-backend/ │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── modules.xml │ │ │ └── nestjs-backend.iml │ │ ├── README.md │ │ ├── nest-cli.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.module.ts │ │ │ ├── bootstrap.ts │ │ │ ├── cache/ │ │ │ │ ├── cache.module.ts │ │ │ │ ├── cache.provider.ts │ │ │ │ ├── cache.service.ts │ │ │ │ └── types.ts │ │ │ ├── configs/ │ │ │ │ ├── auth.config.ts │ │ │ │ ├── base.config.ts │ │ │ │ ├── bootstrap.config.ts │ │ │ │ ├── cache.config.ts │ │ │ │ ├── config.module.ts │ │ │ │ ├── config.spec.ts │ │ │ │ ├── env.validation.schema.ts │ │ │ │ ├── logger.config.ts │ │ │ │ ├── mail.config.ts │ │ │ │ ├── oauth.config.ts │ │ │ │ ├── storage.ts │ │ │ │ ├── threshold.config.ts │ │ │ │ └── trash.config.ts │ │ │ ├── const.ts │ │ │ ├── custom.exception.ts │ │ │ ├── db-provider/ │ │ │ │ ├── aggregation-query/ │ │ │ │ │ ├── aggregation-function.abstract.ts │ │ │ │ │ ├── aggregation-function.interface.ts │ │ │ │ │ ├── aggregation-query.abstract.ts │ │ │ │ │ ├── aggregation-query.interface.ts │ │ │ │ │ ├── postgres/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ └── multiple-value-aggregation.adapter.spec.ts │ │ │ │ │ │ ├── aggregation-function.postgres.ts │ │ │ │ │ │ ├── aggregation-query.postgres.ts │ │ │ │ │ │ ├── multiple-value/ │ │ │ │ │ │ │ └── multiple-value-aggregation.adapter.ts │ │ │ │ │ │ └── single-value/ │ │ │ │ │ │ └── single-value-aggregation.adapter.ts │ │ │ │ │ └── sqlite/ │ │ │ │ │ ├── aggregation-function.sqlite.ts │ │ │ │ │ ├── aggregation-query.sqlite.ts │ │ │ │ │ ├── multiple-value/ │ │ │ │ │ │ └── multiple-value-aggregation.adapter.ts │ │ │ │ │ └── single-value/ │ │ │ │ │ └── single-value-aggregation.adapter.ts │ │ │ │ ├── base-query/ │ │ │ │ │ ├── abstract.ts │ │ │ │ │ ├── base-query.postgres.ts │ │ │ │ │ └── base-query.sqlite.ts │ │ │ │ ├── create-database-column-query/ │ │ │ │ │ ├── create-database-column-field-visitor.interface.ts │ │ │ │ │ ├── create-database-column-field-visitor.postgres.ts │ │ │ │ │ ├── create-database-column-field-visitor.sqlite.ts │ │ │ │ │ ├── create-database-column-field.util.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── db.provider.interface.ts │ │ │ │ ├── db.provider.ts │ │ │ │ ├── drop-database-column-query/ │ │ │ │ │ ├── drop-database-column-field-visitor.interface.ts │ │ │ │ │ ├── drop-database-column-field-visitor.postgres.ts │ │ │ │ │ ├── drop-database-column-field-visitor.sqlite.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── duplicate-table/ │ │ │ │ │ ├── abstract.ts │ │ │ │ │ ├── duplicate-attachment-table-query.abstract.ts │ │ │ │ │ ├── duplicate-attachment-table-query.postgres.ts │ │ │ │ │ ├── duplicate-attachment-table-query.sqlite.ts │ │ │ │ │ ├── duplicate-query.postgres.ts │ │ │ │ │ └── duplicate-query.sqlite.ts │ │ │ │ ├── filter-query/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── field-reference.spec.ts │ │ │ │ │ ├── cell-value-filter.abstract.ts │ │ │ │ │ ├── cell-value-filter.interface.ts │ │ │ │ │ ├── filter-query.abstract.ts │ │ │ │ │ ├── filter-query.interface.ts │ │ │ │ │ ├── postgres/ │ │ │ │ │ │ ├── cell-value-filter/ │ │ │ │ │ │ │ ├── cell-value-filter.postgres.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── multiple-value/ │ │ │ │ │ │ │ │ ├── multiple-boolean-cell-value-filter.adapter.ts │ │ │ │ │ │ │ │ ├── multiple-datetime-cell-value-filter.adapter.ts │ │ │ │ │ │ │ │ ├── multiple-json-cell-value-filter.adapter.ts │ │ │ │ │ │ │ │ ├── multiple-number-cell-value-filter.adapter.ts │ │ │ │ │ │ │ │ └── multiple-string-cell-value-filter.adapter.ts │ │ │ │ │ │ │ └── single-value/ │ │ │ │ │ │ │ ├── boolean-cell-value-filter.adapter.ts │ │ │ │ │ │ │ ├── datetime-cell-value-filter.adapter.ts │ │ │ │ │ │ │ ├── json-cell-value-filter.adapter.ts │ │ │ │ │ │ │ ├── number-cell-value-filter.adapter.ts │ │ │ │ │ │ │ └── string-cell-value-filter.adapter.ts │ │ │ │ │ │ └── filter-query.postgres.ts │ │ │ │ │ └── sqlite/ │ │ │ │ │ ├── cell-value-filter/ │ │ │ │ │ │ ├── cell-value-filter.sqlite.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── multiple-value/ │ │ │ │ │ │ │ ├── multiple-boolean-cell-value-filter.adapter.ts │ │ │ │ │ │ │ ├── multiple-datetime-cell-value-filter.adapter.ts │ │ │ │ │ │ │ ├── multiple-json-cell-value-filter.adapter.ts │ │ │ │ │ │ │ ├── multiple-number-cell-value-filter.adapter.ts │ │ │ │ │ │ │ └── multiple-string-cell-value-filter.adapter.ts │ │ │ │ │ │ └── single-value/ │ │ │ │ │ │ ├── boolean-cell-value-filter.adapter.ts │ │ │ │ │ │ ├── datetime-cell-value-filter.adapter.ts │ │ │ │ │ │ ├── json-cell-value-filter.adapter.ts │ │ │ │ │ │ ├── number-cell-value-filter.adapter.ts │ │ │ │ │ │ └── string-cell-value-filter.adapter.ts │ │ │ │ │ └── filter-query.sqlite.ts │ │ │ │ ├── generated-column-query/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── formula-query.spec.ts.snap │ │ │ │ │ │ ├── generated-column-query.spec.ts.snap │ │ │ │ │ │ └── sql-conversion.spec.ts.snap │ │ │ │ │ ├── generated-column-query-support-validator.spec.ts │ │ │ │ │ ├── generated-column-query.abstract.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── postgres/ │ │ │ │ │ │ ├── generated-column-query-support-validator.postgres.ts │ │ │ │ │ │ ├── generated-column-query.postgres.spec.ts │ │ │ │ │ │ └── generated-column-query.postgres.ts │ │ │ │ │ └── sqlite/ │ │ │ │ │ ├── generated-column-query-support-validator.sqlite.ts │ │ │ │ │ ├── generated-column-query.sqlite.spec.ts │ │ │ │ │ └── generated-column-query.sqlite.ts │ │ │ │ ├── group-query/ │ │ │ │ │ ├── format-string.ts │ │ │ │ │ ├── group-query.abstract.ts │ │ │ │ │ ├── group-query.interface.ts │ │ │ │ │ ├── group-query.postgres.ts │ │ │ │ │ └── group-query.sqlite.ts │ │ │ │ ├── index-query/ │ │ │ │ │ └── index-abstract-builder.ts │ │ │ │ ├── integrity-query/ │ │ │ │ │ ├── abstract.ts │ │ │ │ │ ├── integrity-query.postgres.ts │ │ │ │ │ └── integrity-query.sqlite.ts │ │ │ │ ├── postgres.provider.ts │ │ │ │ ├── search-query/ │ │ │ │ │ ├── abstract.ts │ │ │ │ │ ├── get-offset.ts │ │ │ │ │ ├── search-index-builder.postgres.ts │ │ │ │ │ ├── search-index-builder.sqlite.ts │ │ │ │ │ ├── search-query.postgres.ts │ │ │ │ │ ├── search-query.sqlite.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── select-query/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── postgres/ │ │ │ │ │ │ ├── select-query.postgres.spec.ts │ │ │ │ │ │ └── select-query.postgres.ts │ │ │ │ │ ├── select-query.abstract.ts │ │ │ │ │ └── sqlite/ │ │ │ │ │ ├── select-query.sqlite.spec.ts │ │ │ │ │ └── select-query.sqlite.ts │ │ │ │ ├── sort-query/ │ │ │ │ │ ├── function/ │ │ │ │ │ │ ├── sort-function.abstract.ts │ │ │ │ │ │ └── sort-function.interface.ts │ │ │ │ │ ├── postgres/ │ │ │ │ │ │ ├── multiple-value/ │ │ │ │ │ │ │ ├── multiple-datetime-sort.adapter.ts │ │ │ │ │ │ │ ├── multiple-json-sort.adapter.ts │ │ │ │ │ │ │ └── multiple-number-sort.adapter.ts │ │ │ │ │ │ ├── single-value/ │ │ │ │ │ │ │ ├── date-sort.adapter.ts │ │ │ │ │ │ │ ├── json-sort.adapter.ts │ │ │ │ │ │ │ └── string-sort.adapter.ts │ │ │ │ │ │ ├── sort-query.function.ts │ │ │ │ │ │ └── sort-query.postgres.ts │ │ │ │ │ ├── sort-query.abstract.ts │ │ │ │ │ ├── sort-query.interface.ts │ │ │ │ │ └── sqlite/ │ │ │ │ │ ├── multiple-value/ │ │ │ │ │ │ ├── multiple-datetime-sort.adapter.ts │ │ │ │ │ │ ├── multiple-json-sort.adapter.ts │ │ │ │ │ │ └── multiple-number-sort.adapter.ts │ │ │ │ │ ├── single-value/ │ │ │ │ │ │ ├── date-sort.adapter.ts │ │ │ │ │ │ ├── json-sort.adapter.ts │ │ │ │ │ │ └── string-sort.adapter.ts │ │ │ │ │ ├── sort-query.function.ts │ │ │ │ │ └── sort-query.sqlite.ts │ │ │ │ ├── sqlite.provider.ts │ │ │ │ └── utils/ │ │ │ │ ├── datetime-format.util.ts │ │ │ │ ├── default-datetime-parse-pattern.spec.ts │ │ │ │ ├── default-datetime-parse-pattern.ts │ │ │ │ └── formula-param-metadata.util.ts │ │ │ ├── event-emitter/ │ │ │ │ ├── decorators/ │ │ │ │ │ └── emit-controller-event.decorator.ts │ │ │ │ ├── event-emitter.module.ts │ │ │ │ ├── event-emitter.service.ts │ │ │ │ ├── event-job/ │ │ │ │ │ ├── event-job.module.ts │ │ │ │ │ └── fallback/ │ │ │ │ │ ├── event-emitter.ts │ │ │ │ │ ├── fallback-queue.module.ts │ │ │ │ │ ├── fallback-queue.service.ts │ │ │ │ │ └── local-queue.provider.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── app.event.ts │ │ │ │ │ ├── base/ │ │ │ │ │ │ ├── base-node.event.ts │ │ │ │ │ │ ├── base.event.ts │ │ │ │ │ │ └── folder/ │ │ │ │ │ │ └── base.folder.event.ts │ │ │ │ │ ├── core-event.ts │ │ │ │ │ ├── dashboard/ │ │ │ │ │ │ └── dashboard.event.ts │ │ │ │ │ ├── event.enum.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── last-visit/ │ │ │ │ │ │ └── last-visit.event.ts │ │ │ │ │ ├── op-event.ts │ │ │ │ │ ├── space/ │ │ │ │ │ │ ├── collaborator.event.ts │ │ │ │ │ │ └── space.event.ts │ │ │ │ │ ├── table/ │ │ │ │ │ │ ├── button.event.ts │ │ │ │ │ │ ├── field.event.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── record.event.ts │ │ │ │ │ │ ├── table.event.ts │ │ │ │ │ │ └── view.event.ts │ │ │ │ │ ├── user/ │ │ │ │ │ │ └── user.event.ts │ │ │ │ │ └── workflow/ │ │ │ │ │ └── workflow.event.ts │ │ │ │ ├── interceptor/ │ │ │ │ │ └── event.Interceptor.ts │ │ │ │ └── listeners/ │ │ │ │ ├── action-trigger.listener.ts │ │ │ │ ├── attachment.listener.ts │ │ │ │ ├── base-permission-update.listener.ts │ │ │ │ ├── collaborator-notification.listener.ts │ │ │ │ ├── pin.listener.ts │ │ │ │ ├── record-history.listener.ts │ │ │ │ └── trash.listener.ts │ │ │ ├── features/ │ │ │ │ ├── access-token/ │ │ │ │ │ ├── access-token.controller.spec.ts │ │ │ │ │ ├── access-token.controller.ts │ │ │ │ │ ├── access-token.encryptor.ts │ │ │ │ │ ├── access-token.module.ts │ │ │ │ │ ├── access-token.service.spec.ts │ │ │ │ │ └── access-token.service.ts │ │ │ │ ├── aggregation/ │ │ │ │ │ ├── aggregation.module.ts │ │ │ │ │ ├── aggregation.service.interface.ts │ │ │ │ │ ├── aggregation.service.provider.ts │ │ │ │ │ ├── aggregation.service.spec.ts │ │ │ │ │ ├── aggregation.service.symbol.ts │ │ │ │ │ ├── aggregation.service.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── open-api/ │ │ │ │ │ ├── aggregation-open-api.controller.spec.ts │ │ │ │ │ ├── aggregation-open-api.controller.ts │ │ │ │ │ ├── aggregation-open-api.module.ts │ │ │ │ │ ├── aggregation-open-api.service.spec.ts │ │ │ │ │ └── aggregation-open-api.service.ts │ │ │ │ ├── ai/ │ │ │ │ │ ├── ai.controller.ts │ │ │ │ │ ├── ai.module.ts │ │ │ │ │ ├── ai.service.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ └── util.ts │ │ │ │ ├── attachments/ │ │ │ │ │ ├── attachments-crop.module.ts │ │ │ │ │ ├── attachments-crop.processor.ts │ │ │ │ │ ├── attachments-storage.module.ts │ │ │ │ │ ├── attachments-storage.service.ts │ │ │ │ │ ├── attachments-table.module.ts │ │ │ │ │ ├── attachments-table.service.spec.ts │ │ │ │ │ ├── attachments-table.service.ts │ │ │ │ │ ├── attachments.controller.spec.ts │ │ │ │ │ ├── attachments.controller.ts │ │ │ │ │ ├── attachments.module.ts │ │ │ │ │ ├── attachments.service.spec.ts │ │ │ │ │ ├── attachments.service.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── guard/ │ │ │ │ │ │ └── auth.guard.ts │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ ├── adapter.ts │ │ │ │ │ │ ├── aliyun.ts │ │ │ │ │ │ ├── local.spec.ts │ │ │ │ │ │ ├── local.ts │ │ │ │ │ │ ├── minio.ts │ │ │ │ │ │ ├── s3.ts │ │ │ │ │ │ ├── storage.module.ts │ │ │ │ │ │ ├── storage.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── auth/ │ │ │ │ │ ├── auth.controller.spec.ts │ │ │ │ │ ├── auth.controller.ts │ │ │ │ │ ├── auth.module.ts │ │ │ │ │ ├── auth.service.spec.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── decorators/ │ │ │ │ │ │ ├── allow-anonymous.decorator.ts │ │ │ │ │ │ ├── base-node-permissions.decorator.ts │ │ │ │ │ │ ├── disabled-permission.decorator.ts │ │ │ │ │ │ ├── ensure-login.decorator.ts │ │ │ │ │ │ ├── permissions.decorator.ts │ │ │ │ │ │ ├── public.decorator.ts │ │ │ │ │ │ ├── resource_meta.decorator.ts │ │ │ │ │ │ └── token.decorator.ts │ │ │ │ │ ├── guard/ │ │ │ │ │ │ ├── auth.guard.ts │ │ │ │ │ │ ├── base-node-permission.guard.ts │ │ │ │ │ │ ├── github.guard.ts │ │ │ │ │ │ ├── google.guard.ts │ │ │ │ │ │ ├── local-auth.guard.ts │ │ │ │ │ │ ├── oidc.guard.ts │ │ │ │ │ │ ├── permission.guard.ts │ │ │ │ │ │ └── social.guard.ts │ │ │ │ │ ├── local-auth/ │ │ │ │ │ │ ├── local-auth.controller.ts │ │ │ │ │ │ ├── local-auth.module.ts │ │ │ │ │ │ └── local-auth.service.ts │ │ │ │ │ ├── oauth/ │ │ │ │ │ │ └── oauth.store.ts │ │ │ │ │ ├── permission.module.ts │ │ │ │ │ ├── permission.service.spec.ts │ │ │ │ │ ├── permission.service.ts │ │ │ │ │ ├── session/ │ │ │ │ │ │ ├── session-handle.module.ts │ │ │ │ │ │ ├── session-handle.service.ts │ │ │ │ │ │ ├── session-store.service.spec.ts │ │ │ │ │ │ ├── session-store.service.ts │ │ │ │ │ │ ├── session.module.ts │ │ │ │ │ │ ├── session.serializer.ts │ │ │ │ │ │ └── session.service.ts │ │ │ │ │ ├── social/ │ │ │ │ │ │ ├── controller.adapter.ts │ │ │ │ │ │ ├── github/ │ │ │ │ │ │ │ ├── github.controller.ts │ │ │ │ │ │ │ └── github.module.ts │ │ │ │ │ │ ├── google/ │ │ │ │ │ │ │ ├── google.controller.ts │ │ │ │ │ │ │ └── google.module.ts │ │ │ │ │ │ ├── oidc/ │ │ │ │ │ │ │ ├── oidc.controller.ts │ │ │ │ │ │ │ └── oidc.module.ts │ │ │ │ │ │ └── social.module.ts │ │ │ │ │ ├── strategies/ │ │ │ │ │ │ ├── access-token.passport.ts │ │ │ │ │ │ ├── access-token.strategy.ts │ │ │ │ │ │ ├── anonymous/ │ │ │ │ │ │ │ ├── anonymous.passport.ts │ │ │ │ │ │ │ └── anonymous.strategy.ts │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ ├── github.strategy.ts │ │ │ │ │ │ ├── google.strategy.ts │ │ │ │ │ │ ├── jwt.strategy.ts │ │ │ │ │ │ ├── local.strategy.spec.ts │ │ │ │ │ │ ├── local.strategy.ts │ │ │ │ │ │ ├── oidc.strategy.ts │ │ │ │ │ │ ├── session.passport.ts │ │ │ │ │ │ ├── session.strategy.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── turnstile/ │ │ │ │ │ │ ├── turnstile.module.ts │ │ │ │ │ │ └── turnstile.service.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── base/ │ │ │ │ │ ├── BatchProcessor.class.ts │ │ │ │ │ ├── base-duplicate.service.spec.ts │ │ │ │ │ ├── base-duplicate.service.ts │ │ │ │ │ ├── base-export.service.ts │ │ │ │ │ ├── base-import-processor/ │ │ │ │ │ │ ├── base-import-attachments-csv.module.ts │ │ │ │ │ │ ├── base-import-attachments-csv.processor.ts │ │ │ │ │ │ ├── base-import-attachments.module.ts │ │ │ │ │ │ ├── base-import-attachments.processor.ts │ │ │ │ │ │ ├── base-import-csv.module.ts │ │ │ │ │ │ ├── base-import-csv.processor.ts │ │ │ │ │ │ ├── base-import-junction-csv.module.ts │ │ │ │ │ │ └── base-import-junction.processor.ts │ │ │ │ │ ├── base-import.service.ts │ │ │ │ │ ├── base-query/ │ │ │ │ │ │ ├── base-query.service.ts │ │ │ │ │ │ └── parse/ │ │ │ │ │ │ ├── aggregation.ts │ │ │ │ │ │ ├── filter.ts │ │ │ │ │ │ ├── group.ts │ │ │ │ │ │ ├── order.ts │ │ │ │ │ │ ├── select.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── base.controller.ts │ │ │ │ │ ├── base.module.ts │ │ │ │ │ ├── base.service.spec.ts │ │ │ │ │ ├── base.service.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── db-connection.service.spec.ts │ │ │ │ │ ├── db-connection.service.ts │ │ │ │ │ ├── utils.spec.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── base-node/ │ │ │ │ │ ├── base-node.controller.ts │ │ │ │ │ ├── base-node.listener.ts │ │ │ │ │ ├── base-node.module.ts │ │ │ │ │ ├── base-node.permission.helper.ts │ │ │ │ │ ├── base-node.service.spec.ts │ │ │ │ │ ├── base-node.service.ts │ │ │ │ │ ├── folder/ │ │ │ │ │ │ ├── base-node-folder.controller.ts │ │ │ │ │ │ ├── base-node-folder.module.ts │ │ │ │ │ │ └── base-node-folder.service.ts │ │ │ │ │ ├── helper.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── base-share/ │ │ │ │ │ ├── base-share-auth.service.ts │ │ │ │ │ ├── base-share-open.controller.ts │ │ │ │ │ ├── base-share.controller.ts │ │ │ │ │ ├── base-share.module.ts │ │ │ │ │ ├── base-share.service.ts │ │ │ │ │ ├── guard/ │ │ │ │ │ │ ├── base-share-auth-local.guard.ts │ │ │ │ │ │ ├── base-share-auth.guard.ts │ │ │ │ │ │ └── constant.ts │ │ │ │ │ └── strategies/ │ │ │ │ │ └── jwt.strategy.ts │ │ │ │ ├── base-sql-executor/ │ │ │ │ │ ├── base-sql-executor.module.ts │ │ │ │ │ ├── base-sql-executor.service.ts │ │ │ │ │ ├── const.ts │ │ │ │ │ ├── utils.spec.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── builtin-assets-init/ │ │ │ │ │ ├── builtin-assets-init.module.ts │ │ │ │ │ ├── builtin-assets-init.service.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── calculation/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── batch.service.spec.ts │ │ │ │ │ ├── batch.service.ts │ │ │ │ │ ├── calculation.module.ts │ │ │ │ │ ├── field-calculation.service.spec.ts │ │ │ │ │ ├── field-calculation.service.ts │ │ │ │ │ ├── link.service.spec.ts │ │ │ │ │ ├── link.service.ts │ │ │ │ │ ├── reference.service.ts │ │ │ │ │ ├── system-field.service.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── changes.spec.ts │ │ │ │ │ ├── changes.ts │ │ │ │ │ ├── compose-maps.spec.ts │ │ │ │ │ ├── compose-maps.ts │ │ │ │ │ ├── detect-link.spec.ts │ │ │ │ │ ├── detect-link.ts │ │ │ │ │ ├── dfs.spec.ts │ │ │ │ │ ├── dfs.ts │ │ │ │ │ └── name-console.ts │ │ │ │ ├── canary/ │ │ │ │ │ ├── canary.module.ts │ │ │ │ │ ├── canary.service.ts │ │ │ │ │ ├── decorators/ │ │ │ │ │ │ └── use-v2-feature.decorator.ts │ │ │ │ │ ├── guards/ │ │ │ │ │ │ └── v2-feature.guard.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── interceptors/ │ │ │ │ │ └── v2-indicator.interceptor.ts │ │ │ │ ├── chat/ │ │ │ │ │ ├── chart-completion.ro.ts │ │ │ │ │ ├── chat.controller.spec.ts │ │ │ │ │ ├── chat.controller.ts │ │ │ │ │ ├── chat.module.ts │ │ │ │ │ ├── chat.service.spec.ts │ │ │ │ │ └── chat.service.ts │ │ │ │ ├── collaborator/ │ │ │ │ │ ├── collaborator.controller.spec.ts │ │ │ │ │ ├── collaborator.controller.ts │ │ │ │ │ ├── collaborator.module.ts │ │ │ │ │ ├── collaborator.service.spec.ts │ │ │ │ │ └── collaborator.service.ts │ │ │ │ ├── comment/ │ │ │ │ │ ├── comment-open-api.controller.spec.ts │ │ │ │ │ ├── comment-open-api.controller.ts │ │ │ │ │ ├── comment-open-api.module.ts │ │ │ │ │ └── comment-open-api.service.ts │ │ │ │ ├── dashboard/ │ │ │ │ │ ├── dashboard.controller.spec.ts │ │ │ │ │ ├── dashboard.controller.ts │ │ │ │ │ ├── dashboard.module.ts │ │ │ │ │ ├── dashboard.service.spec.ts │ │ │ │ │ └── dashboard.service.ts │ │ │ │ ├── data-loader/ │ │ │ │ │ ├── data-loader.module.ts │ │ │ │ │ ├── data-loader.service.ts │ │ │ │ │ └── resource/ │ │ │ │ │ ├── field-loader.service.ts │ │ │ │ │ ├── table-common-loader.ts │ │ │ │ │ ├── table-loader.service.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── view-loader.service.ts │ │ │ │ ├── database-view/ │ │ │ │ │ ├── database-view.interface.ts │ │ │ │ │ ├── database-view.module.ts │ │ │ │ │ └── database-view.service.ts │ │ │ │ ├── export/ │ │ │ │ │ ├── metrics/ │ │ │ │ │ │ ├── export-metrics.module.ts │ │ │ │ │ │ ├── export-metrics.service.ts │ │ │ │ │ │ └── export-tracing.service.ts │ │ │ │ │ └── open-api/ │ │ │ │ │ ├── export-open-api.controller.ts │ │ │ │ │ ├── export-open-api.module.ts │ │ │ │ │ └── export-open-api.service.ts │ │ │ │ ├── field/ │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── field-calculate/ │ │ │ │ │ │ ├── field-calculate.module.ts │ │ │ │ │ │ ├── field-converting-link.service.spec.ts │ │ │ │ │ │ ├── field-converting-link.service.ts │ │ │ │ │ │ ├── field-converting.service.spec.ts │ │ │ │ │ │ ├── field-converting.service.ts │ │ │ │ │ │ ├── field-creating.service.spec.ts │ │ │ │ │ │ ├── field-creating.service.ts │ │ │ │ │ │ ├── field-deleting.service.spec.ts │ │ │ │ │ │ ├── field-deleting.service.ts │ │ │ │ │ │ ├── field-supplement.service.ts │ │ │ │ │ │ ├── field-view-sync.service.ts │ │ │ │ │ │ ├── formula-field.service.spec.ts │ │ │ │ │ │ ├── formula-field.service.ts │ │ │ │ │ │ └── link-field-query.service.ts │ │ │ │ │ ├── field-duplicate/ │ │ │ │ │ │ ├── field-duplicate.module.ts │ │ │ │ │ │ └── field-duplicate.service.ts │ │ │ │ │ ├── field.module.ts │ │ │ │ │ ├── field.service.spec.ts │ │ │ │ │ ├── field.service.ts │ │ │ │ │ ├── fields-utils.ts │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── factory.spec.ts │ │ │ │ │ │ ├── factory.ts │ │ │ │ │ │ ├── field-base.ts │ │ │ │ │ │ └── field-dto/ │ │ │ │ │ │ ├── attachment-field.dto.ts │ │ │ │ │ │ ├── auto-number-field.dto.ts │ │ │ │ │ │ ├── button-field.dto.ts │ │ │ │ │ │ ├── checkbox-field.dto.ts │ │ │ │ │ │ ├── conditional-rollup-field.dto.ts │ │ │ │ │ │ ├── created-by-field.dto.ts │ │ │ │ │ │ ├── created-time-field.dto.ts │ │ │ │ │ │ ├── date-field.dto.ts │ │ │ │ │ │ ├── formula-field.dto.ts │ │ │ │ │ │ ├── last-modified-by-field.dto.ts │ │ │ │ │ │ ├── last-modified-time-field.dto.ts │ │ │ │ │ │ ├── link-field.dto.ts │ │ │ │ │ │ ├── long-text-field.dto.ts │ │ │ │ │ │ ├── multiple-select-field.dto.ts │ │ │ │ │ │ ├── number-field.dto.ts │ │ │ │ │ │ ├── rating-field.dto.ts │ │ │ │ │ │ ├── rollup-field.dto.ts │ │ │ │ │ │ ├── single-line-text-field.dto.ts │ │ │ │ │ │ ├── single-select-field.dto.ts │ │ │ │ │ │ └── user-field.dto.ts │ │ │ │ │ ├── open-api/ │ │ │ │ │ │ ├── field-open-api-v2.service.spec.ts │ │ │ │ │ │ ├── field-open-api-v2.service.ts │ │ │ │ │ │ ├── field-open-api.controller.ts │ │ │ │ │ │ ├── field-open-api.module.ts │ │ │ │ │ │ ├── field-open-api.service.spec.ts │ │ │ │ │ │ └── field-open-api.service.ts │ │ │ │ │ └── util.ts │ │ │ │ ├── graph/ │ │ │ │ │ ├── graph.module.ts │ │ │ │ │ ├── graph.service.spec.ts │ │ │ │ │ └── graph.service.ts │ │ │ │ ├── health/ │ │ │ │ │ ├── health.controller.spec.ts │ │ │ │ │ ├── health.controller.ts │ │ │ │ │ ├── health.module.ts │ │ │ │ │ └── health.service.ts │ │ │ │ ├── import/ │ │ │ │ │ ├── metrics/ │ │ │ │ │ │ ├── import-metrics.module.ts │ │ │ │ │ │ ├── import-metrics.service.ts │ │ │ │ │ │ └── import-tracing.service.ts │ │ │ │ │ └── open-api/ │ │ │ │ │ ├── NOTICE.md │ │ │ │ │ ├── delimiter-stream.ts │ │ │ │ │ ├── import-csv-chunk.module.ts │ │ │ │ │ ├── import-csv-chunk.processor.ts │ │ │ │ │ ├── import-csv.module.ts │ │ │ │ │ ├── import-csv.processor.ts │ │ │ │ │ ├── import-error-classifier.ts │ │ │ │ │ ├── import-error-collector.ts │ │ │ │ │ ├── import-open-api-v2.service.ts │ │ │ │ │ ├── import-open-api.controller.ts │ │ │ │ │ ├── import-open-api.module.ts │ │ │ │ │ ├── import-open-api.service.ts │ │ │ │ │ ├── import-result-manifest.ts │ │ │ │ │ ├── import-result.processor.ts │ │ │ │ │ └── import.class.ts │ │ │ │ ├── integrity/ │ │ │ │ │ ├── foreign-key.service.ts │ │ │ │ │ ├── integrity.controller.ts │ │ │ │ │ ├── integrity.module.ts │ │ │ │ │ ├── link-field.service.ts │ │ │ │ │ ├── link-integrity.service.ts │ │ │ │ │ └── unique-index.service.ts │ │ │ │ ├── invitation/ │ │ │ │ │ ├── invitation.controller.spec.ts │ │ │ │ │ ├── invitation.controller.ts │ │ │ │ │ ├── invitation.module.ts │ │ │ │ │ ├── invitation.service.spec.ts │ │ │ │ │ └── invitation.service.ts │ │ │ │ ├── mail-sender/ │ │ │ │ │ ├── mail-helpers.ts │ │ │ │ │ ├── mail-sender.module.ts │ │ │ │ │ ├── mail-sender.service.ts │ │ │ │ │ ├── open-api/ │ │ │ │ │ │ ├── mail-sender-open-api.controller.ts │ │ │ │ │ │ ├── mail-sender-open-api.module.ts │ │ │ │ │ │ ├── mail-sender-open-api.service.ts │ │ │ │ │ │ ├── mail-sender.merge.module.ts │ │ │ │ │ │ └── mail-sender.merge.processor.ts │ │ │ │ │ └── templates/ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ └── normal.hbs │ │ │ │ │ └── partials/ │ │ │ │ │ ├── collaborator-cell-tag.hbs │ │ │ │ │ ├── collaborator-multi-row-tag.hbs │ │ │ │ │ ├── common-body.hbs │ │ │ │ │ ├── email-verify-code.hbs │ │ │ │ │ ├── footer.hbs │ │ │ │ │ ├── header.hbs │ │ │ │ │ ├── html-body.hbs │ │ │ │ │ ├── invite.hbs │ │ │ │ │ ├── notify-merge-body.hbs │ │ │ │ │ └── reset-password.hbs │ │ │ │ ├── model/ │ │ │ │ │ ├── access-token.ts │ │ │ │ │ ├── collaborator.ts │ │ │ │ │ ├── helper.ts │ │ │ │ │ ├── model.module.ts │ │ │ │ │ ├── setting.ts │ │ │ │ │ ├── template.ts │ │ │ │ │ └── user.ts │ │ │ │ ├── next/ │ │ │ │ │ ├── next.controller.ts │ │ │ │ │ ├── next.module.ts │ │ │ │ │ ├── next.service.ts │ │ │ │ │ └── plugin/ │ │ │ │ │ ├── plugin-proxy.middleware.ts │ │ │ │ │ ├── plugin-proxy.module.ts │ │ │ │ │ └── plugin.module.ts │ │ │ │ ├── notification/ │ │ │ │ │ ├── notification.controller.ts │ │ │ │ │ ├── notification.module.ts │ │ │ │ │ └── notification.service.ts │ │ │ │ ├── oauth/ │ │ │ │ │ ├── guard/ │ │ │ │ │ │ └── oauth2-client.guard.ts │ │ │ │ │ ├── oauth-server.controller.ts │ │ │ │ │ ├── oauth-server.service.spec.ts │ │ │ │ │ ├── oauth-server.service.ts │ │ │ │ │ ├── oauth-tx-store.ts │ │ │ │ │ ├── oauth.controller.spec.ts │ │ │ │ │ ├── oauth.controller.ts │ │ │ │ │ ├── oauth.module.ts │ │ │ │ │ ├── oauth.service.spec.ts │ │ │ │ │ ├── oauth.service.ts │ │ │ │ │ ├── pkce.service.ts │ │ │ │ │ ├── strategies/ │ │ │ │ │ │ ├── oauth2-client.strategies.ts │ │ │ │ │ │ └── oauth2-pkce-client.strategy.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── organization/ │ │ │ │ │ ├── organization.controller.ts │ │ │ │ │ └── organization.module.ts │ │ │ │ ├── pin/ │ │ │ │ │ ├── pin.controller.ts │ │ │ │ │ ├── pin.module.ts │ │ │ │ │ └── pin.service.ts │ │ │ │ ├── plugin/ │ │ │ │ │ ├── official/ │ │ │ │ │ │ ├── chart/ │ │ │ │ │ │ │ ├── plugin-chart.controller.ts │ │ │ │ │ │ │ ├── plugin-chart.module.ts │ │ │ │ │ │ │ └── plugin-chart.service.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── chart.ts │ │ │ │ │ │ │ ├── sheet-form-view.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ └── official-plugin-init.service.ts │ │ │ │ │ ├── plugin-auth.service.ts │ │ │ │ │ ├── plugin.controller.spec.ts │ │ │ │ │ ├── plugin.controller.ts │ │ │ │ │ ├── plugin.module.ts │ │ │ │ │ ├── plugin.service.spec.ts │ │ │ │ │ ├── plugin.service.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── plugin-context-menu/ │ │ │ │ │ ├── plugin-context-menu.controller.ts │ │ │ │ │ ├── plugin-context-menu.module.ts │ │ │ │ │ └── plugin-context-menu.service.ts │ │ │ │ ├── plugin-panel/ │ │ │ │ │ ├── plugin-panel.controller.ts │ │ │ │ │ ├── plugin-panel.module.ts │ │ │ │ │ └── plugin-panel.service.ts │ │ │ │ ├── record/ │ │ │ │ │ ├── computed/ │ │ │ │ │ │ ├── computed.module.ts │ │ │ │ │ │ └── services/ │ │ │ │ │ │ ├── computed-dependency-collector.service.ts │ │ │ │ │ │ ├── computed-evaluator.service.ts │ │ │ │ │ │ ├── computed-orchestrator.service.ts │ │ │ │ │ │ ├── computed-pagination.strategy.ts │ │ │ │ │ │ ├── computed-utils.ts │ │ │ │ │ │ ├── link-cascade-resolver.ts │ │ │ │ │ │ └── record-computed-update.service.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── open-api/ │ │ │ │ │ │ ├── field-key.pipe.ts │ │ │ │ │ │ ├── record-open-api-v2.service.spec.ts │ │ │ │ │ │ ├── record-open-api-v2.service.ts │ │ │ │ │ │ ├── record-open-api.controller.ts │ │ │ │ │ │ ├── record-open-api.module.ts │ │ │ │ │ │ ├── record-open-api.service.spec.ts │ │ │ │ │ │ ├── record-open-api.service.ts │ │ │ │ │ │ ├── record-undo-redo-service.ts │ │ │ │ │ │ └── tql.pipe.ts │ │ │ │ │ ├── query-builder/ │ │ │ │ │ │ ├── field-cte-visitor.ts │ │ │ │ │ │ ├── field-formatting-visitor.ts │ │ │ │ │ │ ├── field-select-visitor.ts │ │ │ │ │ │ ├── field-select.type.ts │ │ │ │ │ │ ├── formula-support-generated-column-validator.spec.ts │ │ │ │ │ │ ├── formula-support-generated-column-validator.ts │ │ │ │ │ │ ├── formula-validation.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── providers/ │ │ │ │ │ │ │ ├── pg-record-query-dialect.spec.ts │ │ │ │ │ │ │ ├── pg-record-query-dialect.ts │ │ │ │ │ │ │ └── sqlite-record-query-dialect.ts │ │ │ │ │ │ ├── record-query-builder.interface.ts │ │ │ │ │ │ ├── record-query-builder.manager.ts │ │ │ │ │ │ ├── record-query-builder.module.ts │ │ │ │ │ │ ├── record-query-builder.provider.ts │ │ │ │ │ │ ├── record-query-builder.service.ts │ │ │ │ │ │ ├── record-query-builder.symbol.ts │ │ │ │ │ │ ├── record-query-builder.util.ts │ │ │ │ │ │ ├── record-query-dialect.interface.ts │ │ │ │ │ │ └── sql-conversion.visitor.ts │ │ │ │ │ ├── record-modify/ │ │ │ │ │ │ ├── record-create.service.ts │ │ │ │ │ │ ├── record-delete.service.ts │ │ │ │ │ │ ├── record-duplicate.service.ts │ │ │ │ │ │ ├── record-modify.module.ts │ │ │ │ │ │ ├── record-modify.service.ts │ │ │ │ │ │ ├── record-modify.shared.service.ts │ │ │ │ │ │ └── record-update.service.ts │ │ │ │ │ ├── record-permission.service.ts │ │ │ │ │ ├── record-query.service.ts │ │ │ │ │ ├── record.module.ts │ │ │ │ │ ├── record.service.spec.ts │ │ │ │ │ ├── record.service.ts │ │ │ │ │ ├── type.ts │ │ │ │ │ ├── typecast.validate.spec.ts │ │ │ │ │ ├── typecast.validate.ts │ │ │ │ │ └── user-name.listener.service.ts │ │ │ │ ├── selection/ │ │ │ │ │ ├── selection.controller.spec.ts │ │ │ │ │ ├── selection.controller.ts │ │ │ │ │ ├── selection.module.ts │ │ │ │ │ ├── selection.service.spec.ts │ │ │ │ │ └── selection.service.ts │ │ │ │ ├── setting/ │ │ │ │ │ ├── open-api/ │ │ │ │ │ │ ├── admin-open-api.controller.ts │ │ │ │ │ │ ├── admin-open-api.module.ts │ │ │ │ │ │ ├── admin-open-api.service.ts │ │ │ │ │ │ ├── setting-open-api.controller.ts │ │ │ │ │ │ ├── setting-open-api.module.ts │ │ │ │ │ │ └── setting-open-api.service.ts │ │ │ │ │ ├── setting.module.ts │ │ │ │ │ └── setting.service.ts │ │ │ │ ├── share/ │ │ │ │ │ ├── guard/ │ │ │ │ │ │ ├── auth.guard.ts │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ ├── link-view.decorator.ts │ │ │ │ │ │ ├── share-auth-local.guard.ts │ │ │ │ │ │ └── submit.decorator.ts │ │ │ │ │ ├── share-auth.module.ts │ │ │ │ │ ├── share-auth.service.ts │ │ │ │ │ ├── share-socket.service.ts │ │ │ │ │ ├── share.controller.spec.ts │ │ │ │ │ ├── share.controller.ts │ │ │ │ │ ├── share.module.ts │ │ │ │ │ ├── share.service.spec.ts │ │ │ │ │ ├── share.service.ts │ │ │ │ │ └── strategies/ │ │ │ │ │ └── jwt.strategy.ts │ │ │ │ ├── space/ │ │ │ │ │ ├── space.controller.spec.ts │ │ │ │ │ ├── space.controller.ts │ │ │ │ │ ├── space.module.ts │ │ │ │ │ ├── space.service.spec.ts │ │ │ │ │ ├── space.service.ts │ │ │ │ │ └── template-space-init/ │ │ │ │ │ └── template-space.init.service.ts │ │ │ │ ├── table/ │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── open-api/ │ │ │ │ │ │ ├── table-open-api-v2.mapper.spec.ts │ │ │ │ │ │ ├── table-open-api-v2.mapper.ts │ │ │ │ │ │ ├── table-open-api-v2.service.spec.ts │ │ │ │ │ │ ├── table-open-api-v2.service.ts │ │ │ │ │ │ ├── table-open-api.controller.ts │ │ │ │ │ │ ├── table-open-api.module.ts │ │ │ │ │ │ ├── table-open-api.server.spec.ts │ │ │ │ │ │ ├── table-open-api.service.spec.ts │ │ │ │ │ │ ├── table-open-api.service.ts │ │ │ │ │ │ ├── table.pipe.helper.ts │ │ │ │ │ │ └── table.pipe.ts │ │ │ │ │ ├── table-duplicate.service.ts │ │ │ │ │ ├── table-index.service.ts │ │ │ │ │ ├── table-permission.service.ts │ │ │ │ │ ├── table.module.ts │ │ │ │ │ ├── table.service.spec.ts │ │ │ │ │ └── table.service.ts │ │ │ │ ├── table-domain/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── table-domain-query.module.ts │ │ │ │ │ └── table-domain-query.service.ts │ │ │ │ ├── template/ │ │ │ │ │ ├── template-open-api.controller.spec.ts │ │ │ │ │ ├── template-open-api.controller.ts │ │ │ │ │ ├── template-open-api.module.ts │ │ │ │ │ ├── template-open-api.service.ts │ │ │ │ │ └── template-permalink.service.ts │ │ │ │ ├── trash/ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ └── table-trash.listener.ts │ │ │ │ │ ├── trash.controller.ts │ │ │ │ │ ├── trash.module.ts │ │ │ │ │ ├── trash.service.ts │ │ │ │ │ ├── v2-table-trash.service.spec.ts │ │ │ │ │ ├── v2-table-trash.service.ts │ │ │ │ │ └── v2-trash-record-name.ts │ │ │ │ ├── undo-redo/ │ │ │ │ │ ├── open-api/ │ │ │ │ │ │ ├── undo-redo.controller.ts │ │ │ │ │ │ ├── undo-redo.module.ts │ │ │ │ │ │ └── undo-redo.service.ts │ │ │ │ │ ├── operations/ │ │ │ │ │ │ ├── convert-field-v2.operation.ts │ │ │ │ │ │ ├── convert-field.operation.ts │ │ │ │ │ │ ├── create-fields.operation.ts │ │ │ │ │ │ ├── create-records.operation.ts │ │ │ │ │ │ ├── create-view.operation.ts │ │ │ │ │ │ ├── delete-fields.operation.ts │ │ │ │ │ │ ├── delete-records.operation.ts │ │ │ │ │ │ ├── delete-view.operation.ts │ │ │ │ │ │ ├── paste-selection.operation.ts │ │ │ │ │ │ ├── update-records-order.operation.ts │ │ │ │ │ │ ├── update-records.operation.ts │ │ │ │ │ │ └── update-view.operation.ts │ │ │ │ │ └── stack/ │ │ │ │ │ ├── undo-redo-operation.service.ts │ │ │ │ │ ├── undo-redo-stack.module.ts │ │ │ │ │ └── undo-redo-stack.service.ts │ │ │ │ ├── user/ │ │ │ │ │ ├── delete-user/ │ │ │ │ │ │ ├── delete-user.module.ts │ │ │ │ │ │ └── delete-user.service.ts │ │ │ │ │ ├── last-visit/ │ │ │ │ │ │ ├── last-visit.controller.ts │ │ │ │ │ │ ├── last-visit.module.ts │ │ │ │ │ │ └── last-visit.service.ts │ │ │ │ │ ├── user.controller.spec.ts │ │ │ │ │ ├── user.controller.ts │ │ │ │ │ ├── user.module.ts │ │ │ │ │ ├── user.service.spec.ts │ │ │ │ │ └── user.service.ts │ │ │ │ ├── v2/ │ │ │ │ │ ├── v2-action-trigger.service.spec.ts │ │ │ │ │ ├── v2-action-trigger.service.ts │ │ │ │ │ ├── v2-audit-log.constants.ts │ │ │ │ │ ├── v2-command-bus-tracing.middleware.ts │ │ │ │ │ ├── v2-container.service.ts │ │ │ │ │ ├── v2-create-table-compat.constants.ts │ │ │ │ │ ├── v2-execution-context.factory.ts │ │ │ │ │ ├── v2-field-delete-compat.constants.ts │ │ │ │ │ ├── v2-field-delete-compat.service.ts │ │ │ │ │ ├── v2-logger.adapter.ts │ │ │ │ │ ├── v2-openapi.controller.ts │ │ │ │ │ ├── v2-projection-registrar.ts │ │ │ │ │ ├── v2-query-bus-tracing.middleware.ts │ │ │ │ │ ├── v2-record-history.service.ts │ │ │ │ │ ├── v2-tracer.adapter.ts │ │ │ │ │ ├── v2-undo-redo.constants.ts │ │ │ │ │ ├── v2-user-rename-propagation.service.spec.ts │ │ │ │ │ ├── v2-user-rename-propagation.service.ts │ │ │ │ │ ├── v2.controller.ts │ │ │ │ │ └── v2.module.ts │ │ │ │ └── view/ │ │ │ │ ├── constant.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── calendar-view.dto.ts │ │ │ │ │ ├── factory.ts │ │ │ │ │ ├── form-view.dto.ts │ │ │ │ │ ├── gallery-view.dto.ts │ │ │ │ │ ├── grid-view.dto.ts │ │ │ │ │ ├── kanban-view.dto.ts │ │ │ │ │ └── plugin-view.dto.ts │ │ │ │ ├── open-api/ │ │ │ │ │ ├── view-open-api-v2.service.ts │ │ │ │ │ ├── view-open-api.controller.ts │ │ │ │ │ ├── view-open-api.module.ts │ │ │ │ │ ├── view-open-api.service.spec.ts │ │ │ │ │ └── view-open-api.service.ts │ │ │ │ ├── utils/ │ │ │ │ │ └── derive-frozen-fields.ts │ │ │ │ ├── view.module.ts │ │ │ │ ├── view.service.spec.ts │ │ │ │ └── view.service.ts │ │ │ ├── filter/ │ │ │ │ └── global-exception.filter.ts │ │ │ ├── global/ │ │ │ │ ├── global.module.ts │ │ │ │ ├── init-bootstrap.provider.ts │ │ │ │ ├── init-bootstrap.service.ts │ │ │ │ └── knex/ │ │ │ │ ├── index.ts │ │ │ │ ├── knex.extend.ts │ │ │ │ └── knex.module.ts │ │ │ ├── index.ts │ │ │ ├── instrument.ts │ │ │ ├── logger/ │ │ │ │ └── logger.module.ts │ │ │ ├── middleware/ │ │ │ │ └── request-info.middleware.ts │ │ │ ├── observability/ │ │ │ │ ├── observability.module.ts │ │ │ │ └── profiling/ │ │ │ │ ├── profiler.module.ts │ │ │ │ └── profiler.service.ts │ │ │ ├── performance-cache/ │ │ │ │ ├── cache-metrics/ │ │ │ │ │ ├── metrics.module.ts │ │ │ │ │ └── metrics.service.ts │ │ │ │ ├── decorator.ts │ │ │ │ ├── generate-keys.ts │ │ │ │ ├── index.ts │ │ │ │ ├── module.ts │ │ │ │ ├── performance-cache.decorator.spec.ts │ │ │ │ ├── service.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── share-db/ │ │ │ │ ├── auth.middleware.ts │ │ │ │ ├── interface.ts │ │ │ │ ├── metrics/ │ │ │ │ │ ├── realtime-metrics.module.ts │ │ │ │ │ └── realtime-metrics.service.ts │ │ │ │ ├── readonly/ │ │ │ │ │ ├── field-readonly.service.ts │ │ │ │ │ ├── readonly.module.ts │ │ │ │ │ ├── readonly.service.ts │ │ │ │ │ ├── record-readonly.service.ts │ │ │ │ │ ├── table-readonly.service.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── view-readonly.service.ts │ │ │ │ ├── repair-attachment-op/ │ │ │ │ │ ├── repair-attachment-op.module.ts │ │ │ │ │ └── repair-attachment-op.service.ts │ │ │ │ ├── share-db.adapter.ts │ │ │ │ ├── share-db.module.ts │ │ │ │ ├── share-db.service.ts │ │ │ │ ├── share-db.spec.ts │ │ │ │ ├── sharedb-redis.pubsub.ts │ │ │ │ └── utils.ts │ │ │ ├── swagger.ts │ │ │ ├── tracing/ │ │ │ │ ├── base-tracing.service.ts │ │ │ │ ├── decorators/ │ │ │ │ │ └── span.ts │ │ │ │ └── route-tracing.interceptor.ts │ │ │ ├── tracing.ts │ │ │ ├── types/ │ │ │ │ ├── cls.ts │ │ │ │ ├── data-loader.ts │ │ │ │ ├── i18n.generated.ts │ │ │ │ ├── redlock.d.ts │ │ │ │ └── session.ts │ │ │ ├── utils/ │ │ │ │ ├── code-generate.ts │ │ │ │ ├── convert-view-vo-attachment-url.ts │ │ │ │ ├── date-to-iso.ts │ │ │ │ ├── db-helpers.ts │ │ │ │ ├── db-validation-error.ts │ │ │ │ ├── encryptor.ts │ │ │ │ ├── exception-parse.ts │ │ │ │ ├── extract-field-reference.ts │ │ │ │ ├── file-utils.spec.ts │ │ │ │ ├── file-utils.ts │ │ │ │ ├── filter-has-me.ts │ │ │ │ ├── filter.spec.ts │ │ │ │ ├── filter.ts │ │ │ │ ├── generate-thumbnail-path.ts │ │ │ │ ├── get-max-level-role.ts │ │ │ │ ├── i18n.ts │ │ │ │ ├── index.ts │ │ │ │ ├── is-not-hidden-field.ts │ │ │ │ ├── is-user-or-link.ts │ │ │ │ ├── major-field-keys-changed.spec.ts │ │ │ │ ├── major-field-keys-changed.ts │ │ │ │ ├── metadata.ts │ │ │ │ ├── name-conversion.ts │ │ │ │ ├── postgres-regex-escape.ts │ │ │ │ ├── retry-decorator.spec.ts │ │ │ │ ├── retry-decorator.ts │ │ │ │ ├── second.ts │ │ │ │ ├── sql-like-escape.ts │ │ │ │ ├── string-hash.ts │ │ │ │ ├── timing.ts │ │ │ │ ├── update-order.spec.ts │ │ │ │ ├── update-order.ts │ │ │ │ └── value-convert.ts │ │ │ ├── worker/ │ │ │ │ └── parse.ts │ │ │ ├── ws/ │ │ │ │ ├── ws.gateway.dev.spec.ts │ │ │ │ ├── ws.gateway.dev.ts │ │ │ │ ├── ws.gateway.spec.ts │ │ │ │ ├── ws.gateway.ts │ │ │ │ ├── ws.module.ts │ │ │ │ ├── ws.service.spec.ts │ │ │ │ └── ws.service.ts │ │ │ ├── zod.validation.pipe.spec.ts │ │ │ └── zod.validation.pipe.ts │ │ ├── test/ │ │ │ ├── access-token.e2e-spec.ts │ │ │ ├── aggregation-search-count-question-mark.e2e-spec.ts │ │ │ ├── aggregation-search.e2e-spec.ts │ │ │ ├── aggregation.e2e-spec.ts │ │ │ ├── attachment.e2e-spec.ts │ │ │ ├── audit-user-fields.e2e-spec.ts │ │ │ ├── auth.e2e-spec.ts │ │ │ ├── auto-number.e2e-spec.ts │ │ │ ├── base-duplicate.e2e-spec.ts │ │ │ ├── base-export-sentry.e2e-spec.ts │ │ │ ├── base-node-folder.e2e-spec.ts │ │ │ ├── base-node.e2e-spec.ts │ │ │ ├── base-query.e2e-spec.ts │ │ │ ├── base-share.e2e-spec.ts │ │ │ ├── base-sql-executor.e2e-spec.ts │ │ │ ├── base.e2e-spec.ts │ │ │ ├── basic-link.e2e-spec.ts │ │ │ ├── bidirectional-formula-link.e2e-spec.ts │ │ │ ├── canary.e2e-spec.ts │ │ │ ├── collaboration.e2e-spec.ts │ │ │ ├── comment-count-collapsed-group.e2e-spec.ts │ │ │ ├── comment.e2e-spec.ts │ │ │ ├── comprehensive-aggregation.e2e-spec.ts │ │ │ ├── comprehensive-field-filter.e2e-spec.ts │ │ │ ├── comprehensive-field-sort.e2e-spec.ts │ │ │ ├── computed-orchestrator.e2e-spec.ts │ │ │ ├── computed-user-field.e2e-spec.ts │ │ │ ├── computed-version-regression.e2e-spec.ts │ │ │ ├── conditional-lookup.e2e-spec.ts │ │ │ ├── conditional-rollup.e2e-spec.ts │ │ │ ├── convert-field-transaction.e2e-spec.ts │ │ │ ├── credit.e2e-spec.ts │ │ │ ├── dashboard.e2e-spec.ts │ │ │ ├── data-helpers/ │ │ │ │ ├── 20x-link.ts │ │ │ │ ├── 20x.ts │ │ │ │ └── caces/ │ │ │ │ ├── aggregation-query/ │ │ │ │ │ ├── checkbox-field.ts │ │ │ │ │ ├── date-field.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── multiple-select-field.ts │ │ │ │ │ ├── number-field.ts │ │ │ │ │ ├── single-select-field.ts │ │ │ │ │ ├── text-field.ts │ │ │ │ │ └── user-field.ts │ │ │ │ ├── record-filter-query/ │ │ │ │ │ ├── checkbox-field.ts │ │ │ │ │ ├── date-field/ │ │ │ │ │ │ ├── date-field.ts │ │ │ │ │ │ ├── date-range-sets.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── is-after-sets.ts │ │ │ │ │ │ ├── is-before-sets.ts │ │ │ │ │ │ ├── is-not-sets.ts │ │ │ │ │ │ ├── is-on-or-after-sets.ts │ │ │ │ │ │ ├── is-on-or-before-sets.ts │ │ │ │ │ │ ├── is-sets.ts │ │ │ │ │ │ ├── is-with-in-sets.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── multiple-select-field.ts │ │ │ │ │ ├── number-field.ts │ │ │ │ │ ├── single-select-field.ts │ │ │ │ │ ├── text-field.ts │ │ │ │ │ └── user-field.ts │ │ │ │ └── view-default-share-meta.ts │ │ │ ├── db-connection.e2e-spec.ts │ │ │ ├── dead-lock.e2e-spec.ts │ │ │ ├── delete-field.e2e-spec.ts │ │ │ ├── duplicate-field-transaction.e2e-spec.ts │ │ │ ├── field-calculation.e2e-spec.ts │ │ │ ├── field-converting.e2e-spec.ts │ │ │ ├── field-delete-references.e2e-spec.ts │ │ │ ├── field-duplicate.e2e-spec.ts │ │ │ ├── field-physical-columns.e2e-spec.ts │ │ │ ├── field-reference.e2e-spec.ts │ │ │ ├── field-view-sync.e2e-spec.ts │ │ │ ├── field.e2e-spec.ts │ │ │ ├── filter.e2e-spec.ts │ │ │ ├── formula-boolean-numeric-coercion.e2e-spec.ts │ │ │ ├── formula-conditional-lookup-numeric-if.e2e-spec.ts │ │ │ ├── formula-conditional-numeric-cast-regression.e2e-spec.ts │ │ │ ├── formula-counta-lookup-ancestry.e2e-spec.ts │ │ │ ├── formula-countall-user-link-lookup.e2e-spec.ts │ │ │ ├── formula-datetime-format.e2e-spec.ts │ │ │ ├── formula-datetime-parse-update.e2e-spec.ts │ │ │ ├── formula-delete-chain.e2e-spec.ts │ │ │ ├── formula-field.e2e-spec.ts │ │ │ ├── formula-fromnow-tonow.e2e-spec.ts │ │ │ ├── formula-int-search-link-regression.e2e-spec.ts │ │ │ ├── formula-left-array-flatten.e2e-spec.ts │ │ │ ├── formula-lookup-sum-regression.e2e-spec.ts │ │ │ ├── formula-meta.e2e-spec.ts │ │ │ ├── formula-metadata-coercion.e2e-spec.ts │ │ │ ├── formula-numeric-blank-regression.e2e-spec.ts │ │ │ ├── formula-single-select-regression.e2e-spec.ts │ │ │ ├── formula-timezone-convert.e2e-spec.ts │ │ │ ├── formula.e2e-spec.ts │ │ │ ├── generated-column-blank-if.e2e-spec.ts │ │ │ ├── generated-column-numeric-coercion.e2e-spec.ts │ │ │ ├── graph.e2e-spec.ts │ │ │ ├── group.e2e-spec.ts │ │ │ ├── import-base.e2e-spec.ts │ │ │ ├── integrity.e2e-spec.ts │ │ │ ├── invitation.e2e-spec.ts │ │ │ ├── large-table-operations.e2e-spec.ts │ │ │ ├── legacy-created-time-create.e2e-spec.ts │ │ │ ├── lin-field-not-null.e2e-spec.ts │ │ │ ├── link-api.e2e-spec.ts │ │ │ ├── link-bulk-conversion.e2e-spec.ts │ │ │ ├── link-events.e2e-spec.ts │ │ │ ├── link-field-null-handling.e2e-spec.ts │ │ │ ├── link-formula-if-boolean-context.e2e-spec.ts │ │ │ ├── link-formula-recursion.e2e-spec.ts │ │ │ ├── link-multi-config-toggle-collaboration.e2e-spec.ts │ │ │ ├── link-multi-config-toggle.e2e-spec.ts │ │ │ ├── link-view-user-filter.e2e-spec.ts │ │ │ ├── lookup-cross-base-tiering.e2e-spec.ts │ │ │ ├── lookup-nested-link-lookup.e2e-spec.ts │ │ │ ├── lookup-to-link.e2e-spec.ts │ │ │ ├── lookup.e2e-spec.ts │ │ │ ├── mail.e2e-spec.ts │ │ │ ├── nested-lookup-formula.e2e-spec.ts │ │ │ ├── nested-lookup.e2e-spec.ts │ │ │ ├── not-null-validation.e2e-spec.ts │ │ │ ├── number-precision.e2e-spec.ts │ │ │ ├── oauth-server.e2e-spec.ts │ │ │ ├── oauth.e2e-spec.ts │ │ │ ├── one-many-formula-symmetric-link.e2e-spec.ts │ │ │ ├── opportunity-rollup-regression.e2e-spec.ts │ │ │ ├── order-update.e2e-spec.ts │ │ │ ├── performance.e2e-spec.ts │ │ │ ├── personal-income-tax.e2e-spec.ts │ │ │ ├── pin.e2e-spec.ts │ │ │ ├── plugin-chart.e2e-spec.ts │ │ │ ├── plugin-context-menu.e2e-spec.ts │ │ │ ├── plugin-panel.e2e-spec.ts │ │ │ ├── plugin.e2e-spec.ts │ │ │ ├── record-bulk-delete.e2e-spec.ts │ │ │ ├── record-delete-link-cleanup.e2e-spec.ts │ │ │ ├── record-field-key.e2e-spec.ts │ │ │ ├── record-filter-lookup-number-param.e2e-spec.ts │ │ │ ├── record-filter-lookup-string-question-mark.e2e-spec.ts │ │ │ ├── record-filter-query-issues.e2e-spec.ts │ │ │ ├── record-filter-query.e2e-spec.ts │ │ │ ├── record-group-datetime-timezone.e2e-spec.ts │ │ │ ├── record-history.e2e-spec.ts │ │ │ ├── record-link-select-query.e2e-spec.ts │ │ │ ├── record-query-builder.e2e-spec.ts │ │ │ ├── record-search-query.e2e-spec.ts │ │ │ ├── record-search-question-mark.e2e-spec.ts │ │ │ ├── record-typecast.e2e-spec.ts │ │ │ ├── record-unary-filter.e2e-spec.ts │ │ │ ├── record.e2e-spec.ts │ │ │ ├── rollup.e2e-spec.ts │ │ │ ├── scheduled-computing.e2e-spec.ts │ │ │ ├── select-formula-numeric-coercion.e2e-spec.ts │ │ │ ├── selection.e2e-spec.ts │ │ │ ├── set-column-meta.e2e-spec.ts │ │ │ ├── share-socket.e2e-spec.ts │ │ │ ├── share.e2e-spec.ts │ │ │ ├── sort.e2e-spec.ts │ │ │ ├── space.e2e-spec.ts │ │ │ ├── table-concurrency.e2e-spec.ts │ │ │ ├── table-duplicate.e2e-spec.ts │ │ │ ├── table-export.e2e-spec.ts │ │ │ ├── table-import.e2e-spec.ts │ │ │ ├── table-lifecycle-full.e2e-spec.ts │ │ │ ├── table-trash.e2e-spec.ts │ │ │ ├── table.e2e-spec.ts │ │ │ ├── template-cover-crop.e2e-spec.ts │ │ │ ├── template-preview.e2e-spec.ts │ │ │ ├── template.e2e-spec.ts │ │ │ ├── trash.e2e-spec.ts │ │ │ ├── undo-redo.e2e-spec.ts │ │ │ ├── user-last-visit.e2e-spec.ts │ │ │ ├── utils/ │ │ │ │ ├── axios-instance/ │ │ │ │ │ ├── anonymous-user.ts │ │ │ │ │ └── new-user.ts │ │ │ │ ├── data.generator.ts │ │ │ │ ├── event-promise.ts │ │ │ │ ├── field-mock.ts │ │ │ │ ├── get-error.ts │ │ │ │ ├── init-app.ts │ │ │ │ ├── record-mock.ts │ │ │ │ ├── seed.ts │ │ │ │ ├── testing-logger.ts │ │ │ │ └── wait.ts │ │ │ ├── v2-action-trigger-field-conversion.e2e-spec.ts │ │ │ ├── v2-update-records.e2e-spec.ts │ │ │ ├── view-option.e2e-spec.ts │ │ │ ├── view.e2e-spec.ts │ │ │ └── waitlist.e2e-spec.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── vitest-bench.config.ts │ │ ├── vitest-e2e.config.ts │ │ ├── vitest-e2e.setup.ts │ │ ├── vitest.config.ts │ │ ├── webpack.config.js │ │ ├── webpack.dev.js │ │ └── webpack.swc.js │ ├── nextjs-app/ │ │ ├── .escheckrc │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── modules.xml │ │ │ └── nextjs-app.iml │ │ ├── .size-limit.js │ │ ├── README.md │ │ ├── babel.config.backup.js │ │ ├── components.json │ │ ├── config/ │ │ │ └── tests/ │ │ │ ├── AppTestProviders.tsx │ │ │ ├── I18nextTestStubProvider.tsx │ │ │ ├── ReactSvgrMock.tsx │ │ │ ├── setupVitest.ts │ │ │ └── test-utils.tsx │ │ ├── e2e/ │ │ │ └── pages/ │ │ │ ├── index/ │ │ │ │ ├── index-chinese.spec.ts │ │ │ │ └── index.spec.ts │ │ │ └── system/ │ │ │ └── 404.spec.ts │ │ ├── instrumentation.ts │ │ ├── lint-staged.config.js │ │ ├── next-i18next.config.js │ │ ├── next.config.js │ │ ├── package.json │ │ ├── playwright.config.ts │ │ ├── postcss.config.js │ │ ├── public/ │ │ │ ├── images/ │ │ │ │ └── favicon/ │ │ │ │ ├── .readme │ │ │ │ ├── browserconfig.xml │ │ │ │ └── site.webmanifest │ │ │ ├── robots.txt │ │ │ └── streamsaver/ │ │ │ ├── mitm.html │ │ │ └── sw.js │ │ ├── sentry.client.config.ts │ │ ├── sentry.server.config.ts │ │ ├── src/ │ │ │ ├── AppProviders.tsx │ │ │ ├── backend/ │ │ │ │ └── api/ │ │ │ │ └── rest/ │ │ │ │ ├── axios.ts │ │ │ │ ├── get-user.ts │ │ │ │ └── ssr-api.ts │ │ │ ├── components/ │ │ │ │ ├── Banner.tsx │ │ │ │ ├── Guide.tsx │ │ │ │ ├── Metrics.tsx │ │ │ │ ├── RouterProgress.tsx │ │ │ │ ├── Selector.tsx │ │ │ │ ├── TeableLogo.tsx │ │ │ │ ├── changelog/ │ │ │ │ │ ├── ChangelogNotification.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── google-ads.tsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── MainFooter.tsx │ │ │ │ │ ├── MainLayout.tsx │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── MainLayout.test.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── store/ │ │ │ │ ├── guide.ts │ │ │ │ └── index.ts │ │ │ ├── features/ │ │ │ │ ├── app/ │ │ │ │ │ ├── automation/ │ │ │ │ │ │ ├── Pages.tsx │ │ │ │ │ │ └── workflow-panel/ │ │ │ │ │ │ ├── WorkFlowPanel.tsx │ │ │ │ │ │ ├── WorkFlowPanelModal.tsx │ │ │ │ │ │ └── useWorkFlowPaneStore.ts │ │ │ │ │ ├── base/ │ │ │ │ │ │ └── CommunityPage.tsx │ │ │ │ │ ├── base-node/ │ │ │ │ │ │ ├── BasePage.tsx │ │ │ │ │ │ ├── DashBoardPage.tsx │ │ │ │ │ │ ├── TablePage.tsx │ │ │ │ │ │ ├── WorkflowPage.tsx │ │ │ │ │ │ ├── helper.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── blocks/ │ │ │ │ │ │ ├── App.tsx │ │ │ │ │ │ ├── AuthorityMatrix.tsx │ │ │ │ │ │ ├── Error.tsx │ │ │ │ │ │ ├── admin/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── setting/ │ │ │ │ │ │ │ │ ├── SettingPage.tsx │ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ │ ├── Branding.tsx │ │ │ │ │ │ │ │ │ ├── BrandingLogo.tsx │ │ │ │ │ │ │ │ │ ├── ConfigurationList.tsx │ │ │ │ │ │ │ │ │ ├── CopyInstance.tsx │ │ │ │ │ │ │ │ │ ├── ai-config/ │ │ │ │ │ │ │ │ │ │ ├── AIConfigurationStatus.tsx │ │ │ │ │ │ │ │ │ │ ├── AIControlCard.tsx │ │ │ │ │ │ │ │ │ │ ├── AIModelPreferencesCard.tsx │ │ │ │ │ │ │ │ │ │ ├── AIProviderCard.tsx │ │ │ │ │ │ │ │ │ │ ├── AISetupWizard.tsx │ │ │ │ │ │ │ │ │ │ ├── AiFormWizard.tsx │ │ │ │ │ │ │ │ │ │ ├── AiModelSelect.tsx │ │ │ │ │ │ │ │ │ │ ├── BatchTestModels.tsx │ │ │ │ │ │ │ │ │ │ ├── CodingModels.tsx │ │ │ │ │ │ │ │ │ │ ├── DefaultModelsStep.tsx │ │ │ │ │ │ │ │ │ │ ├── GatewayModelPickerDialog.tsx │ │ │ │ │ │ │ │ │ │ ├── GatewayModelsStep.tsx │ │ │ │ │ │ │ │ │ │ ├── LLMApiConfigStep.tsx │ │ │ │ │ │ │ │ │ │ ├── LlmProviderForm.tsx │ │ │ │ │ │ │ │ │ │ ├── LlmproviderManage.tsx │ │ │ │ │ │ │ │ │ │ ├── SetupStepCard.tsx │ │ │ │ │ │ │ │ │ │ ├── TestButton.tsx │ │ │ │ │ │ │ │ │ │ ├── ai-model-select/ │ │ │ │ │ │ │ │ │ │ │ ├── GatewayModelOption.tsx │ │ │ │ │ │ │ │ │ │ │ ├── ModelSelectTrigger.tsx │ │ │ │ │ │ │ │ │ │ │ ├── ProviderModelOption.tsx │ │ │ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ │ │ │ │ ├── useGatewayModels.ts │ │ │ │ │ │ │ │ │ │ │ ├── useModelCategories.ts │ │ │ │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ │ │ │ │ ├── gateway-models-step/ │ │ │ │ │ │ │ │ │ │ │ ├── AddModelDialog.tsx │ │ │ │ │ │ │ │ │ │ │ ├── ModelCard.tsx │ │ │ │ │ │ │ │ │ │ │ ├── ModelSearchPopover.tsx │ │ │ │ │ │ │ │ │ │ │ ├── PricingSection.tsx │ │ │ │ │ │ │ │ │ │ │ ├── QuickAddButtons.tsx │ │ │ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ │ │ │ └── utils.tsx │ │ │ │ │ │ │ │ │ ├── canary/ │ │ │ │ │ │ │ │ │ │ ├── CanarySettings.tsx │ │ │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ │ ├── mail-config/ │ │ │ │ │ │ │ │ │ │ ├── MailConfig.tsx │ │ │ │ │ │ │ │ │ │ └── MailConfigForm.tsx │ │ │ │ │ │ │ │ │ └── waitlist/ │ │ │ │ │ │ │ │ │ ├── InviteCodeManage.tsx │ │ │ │ │ │ │ │ │ └── WaitlistManage.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ └── template/ │ │ │ │ │ │ │ ├── TemplatePage.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── BaseSelectPanel.tsx │ │ │ │ │ │ │ │ ├── CategorySettingDialog.tsx │ │ │ │ │ │ │ │ ├── MarkdownEditor.tsx │ │ │ │ │ │ │ │ ├── MarkdownPreviewButton.tsx │ │ │ │ │ │ │ │ ├── TemplateCategorySelect.tsx │ │ │ │ │ │ │ │ ├── TemplateCover.tsx │ │ │ │ │ │ │ │ ├── TemplateTable.tsx │ │ │ │ │ │ │ │ ├── TemplateTooltips.tsx │ │ │ │ │ │ │ │ ├── TextEditor.tsx │ │ │ │ │ │ │ │ ├── TextEditorDialog.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── upload-panel/ │ │ │ │ │ │ │ │ ├── Process.tsx │ │ │ │ │ │ │ │ ├── TemplateCoverPreview.tsx │ │ │ │ │ │ │ │ ├── Trigger.tsx │ │ │ │ │ │ │ │ ├── UploadPanel.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ ├── BasePermissionListener.tsx │ │ │ │ │ │ │ ├── base-node/ │ │ │ │ │ │ │ │ ├── BaseNodeContext.ts │ │ │ │ │ │ │ │ ├── BaseNodeProvider.tsx │ │ │ │ │ │ │ │ └── hooks/ │ │ │ │ │ │ │ │ ├── helper.spec.ts │ │ │ │ │ │ │ │ ├── helper.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── useBaseNode.ts │ │ │ │ │ │ │ │ ├── useBaseNodeContext.ts │ │ │ │ │ │ │ │ └── useBaseNodeCrud.ts │ │ │ │ │ │ │ ├── base-side-bar/ │ │ │ │ │ │ │ │ ├── BaseNodeAddResourceButton.tsx │ │ │ │ │ │ │ │ ├── BaseNodeMore.tsx │ │ │ │ │ │ │ │ ├── BaseNodeShareIndicator.tsx │ │ │ │ │ │ │ │ ├── BaseNodeStarButton.tsx │ │ │ │ │ │ │ │ ├── BaseNodeTree.tsx │ │ │ │ │ │ │ │ ├── BasePageRouter.tsx │ │ │ │ │ │ │ │ ├── BaseSideBar.tsx │ │ │ │ │ │ │ │ ├── BaseSidebarHeaderLeft.tsx │ │ │ │ │ │ │ │ ├── NodeShareContent.tsx │ │ │ │ │ │ │ │ ├── NodeShareDialog.tsx │ │ │ │ │ │ │ │ └── QuickAction.tsx │ │ │ │ │ │ │ ├── duplicate/ │ │ │ │ │ │ │ │ ├── DuplicateBaseModal.tsx │ │ │ │ │ │ │ │ ├── TemplateCreateBaseModal.tsx │ │ │ │ │ │ │ │ ├── useDuplicateBaseStore.ts │ │ │ │ │ │ │ │ ├── useTemplateCreateBaseStore.ts │ │ │ │ │ │ │ │ └── useTemplateMonitor.ts │ │ │ │ │ │ │ └── hooks/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── useLastVisitBase.ts │ │ │ │ │ │ ├── billing/ │ │ │ │ │ │ │ ├── SpaceSubscriptionModal.tsx │ │ │ │ │ │ │ ├── useSpaceSubscriptionMonitor.ts │ │ │ │ │ │ │ └── useSpaceSubscriptionStore.ts │ │ │ │ │ │ ├── chart/ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── Chart.tsx │ │ │ │ │ │ │ │ ├── ChartProvider.tsx │ │ │ │ │ │ │ │ ├── EnvProvider.tsx │ │ │ │ │ │ │ │ └── chart/ │ │ │ │ │ │ │ │ ├── ChartLayout.tsx │ │ │ │ │ │ │ │ ├── ChartPage.tsx │ │ │ │ │ │ │ │ ├── ChartQuery.tsx │ │ │ │ │ │ │ │ ├── chart-config/ │ │ │ │ │ │ │ │ │ ├── ChartForm.tsx │ │ │ │ │ │ │ │ │ ├── ChartSetting.tsx │ │ │ │ │ │ │ │ │ ├── QueryStatus.tsx │ │ │ │ │ │ │ │ │ ├── TypeSelector.tsx │ │ │ │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ │ │ │ ├── AxisDisplayBaseContent.tsx │ │ │ │ │ │ │ │ │ │ ├── ColumnSelector.tsx │ │ │ │ │ │ │ │ │ │ ├── ComboLineStyleEditor.tsx │ │ │ │ │ │ │ │ │ │ ├── ComboTypeEditor.tsx │ │ │ │ │ │ │ │ │ │ ├── ComboXAxisDisplayEditor.tsx │ │ │ │ │ │ │ │ │ │ ├── ComboYAisxDisplayEditor.tsx │ │ │ │ │ │ │ │ │ │ ├── ConfigItem.tsx │ │ │ │ │ │ │ │ │ │ ├── GoalLineEditor.tsx │ │ │ │ │ │ │ │ │ │ ├── NumberInput.tsx │ │ │ │ │ │ │ │ │ │ ├── PaddingEditor.tsx │ │ │ │ │ │ │ │ │ │ ├── SwitchEditor.tsx │ │ │ │ │ │ │ │ │ │ └── YAxisPositionEditor.tsx │ │ │ │ │ │ │ │ │ └── form/ │ │ │ │ │ │ │ │ │ ├── AreaForm.tsx │ │ │ │ │ │ │ │ │ ├── BarForm.tsx │ │ │ │ │ │ │ │ │ ├── ComboForm.tsx │ │ │ │ │ │ │ │ │ ├── ComboXAxisEditor.tsx │ │ │ │ │ │ │ │ │ ├── ComboYAxisEditor.tsx │ │ │ │ │ │ │ │ │ ├── LineForm.tsx │ │ │ │ │ │ │ │ │ ├── PieForm.tsx │ │ │ │ │ │ │ │ │ ├── TableForm.tsx │ │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ │ ├── chart-show/ │ │ │ │ │ │ │ │ │ ├── ChartDisplay.tsx │ │ │ │ │ │ │ │ │ ├── combo/ │ │ │ │ │ │ │ │ │ │ ├── Combo.tsx │ │ │ │ │ │ │ │ │ │ ├── TooltipItem.tsx │ │ │ │ │ │ │ │ │ │ └── useComboConfig.ts │ │ │ │ │ │ │ │ │ ├── pie/ │ │ │ │ │ │ │ │ │ │ ├── Pie.tsx │ │ │ │ │ │ │ │ │ │ ├── PieLegendContent.tsx │ │ │ │ │ │ │ │ │ │ ├── usePieConfig.tsx │ │ │ │ │ │ │ │ │ │ └── useRefObserve.ts │ │ │ │ │ │ │ │ │ ├── table/ │ │ │ │ │ │ │ │ │ │ └── ChartTable.tsx │ │ │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ │ ├── globals.css │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── useBaseQueryData.ts │ │ │ │ │ │ │ │ ├── useEnv.ts │ │ │ │ │ │ │ │ ├── useFilterNumberColumns.ts │ │ │ │ │ │ │ │ ├── usePluginInstall.ts │ │ │ │ │ │ │ │ └── useUIConfig.ts │ │ │ │ │ │ │ ├── query.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── dashboard/ │ │ │ │ │ │ │ └── Dashboard.tsx │ │ │ │ │ │ ├── db-connection/ │ │ │ │ │ │ │ ├── Panel.tsx │ │ │ │ │ │ │ └── hooks/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── useDbConnection.ts │ │ │ │ │ │ ├── design/ │ │ │ │ │ │ │ ├── BaseDetail.tsx │ │ │ │ │ │ │ ├── Design.tsx │ │ │ │ │ │ │ ├── TableDetail.tsx │ │ │ │ │ │ │ ├── TableTabs.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ │ ├── FieldPropertyEditor.tsx │ │ │ │ │ │ │ │ └── Integrity.tsx │ │ │ │ │ │ │ └── data-table/ │ │ │ │ │ │ │ ├── DataTable.tsx │ │ │ │ │ │ │ ├── FieldGraph.tsx │ │ │ │ │ │ │ └── useDataColumns.tsx │ │ │ │ │ │ ├── erd/ │ │ │ │ │ │ │ ├── BaseErd.tsx │ │ │ │ │ │ │ ├── BaseErdTableNode.tsx │ │ │ │ │ │ │ ├── CustomMakers.tsx │ │ │ │ │ │ │ ├── DynamicBaseErd.tsx │ │ │ │ │ │ │ └── SelfConnectingEdge.tsx │ │ │ │ │ │ ├── graph/ │ │ │ │ │ │ │ ├── DynamicFieldGraph.tsx │ │ │ │ │ │ │ ├── FieldGraph.tsx │ │ │ │ │ │ │ ├── ProgressBar.tsx │ │ │ │ │ │ │ └── usePlan.ts │ │ │ │ │ │ ├── import-table/ │ │ │ │ │ │ │ ├── TableImport.tsx │ │ │ │ │ │ │ ├── UrlPanel.tsx │ │ │ │ │ │ │ ├── field-config-panel/ │ │ │ │ │ │ │ │ ├── CollapsePanel.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── inplace-panel/ │ │ │ │ │ │ │ │ │ ├── FieldSelector.tsx │ │ │ │ │ │ │ │ │ ├── InplaceFieldConfigPanel.tsx │ │ │ │ │ │ │ │ │ └── InplacePreviewColumn.tsx │ │ │ │ │ │ │ │ └── new-create-panel/ │ │ │ │ │ │ │ │ ├── FieldConfigPanel.tsx │ │ │ │ │ │ │ │ └── PreviewColumn.tsx │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── upload-panel/ │ │ │ │ │ │ │ ├── Process.tsx │ │ │ │ │ │ │ ├── Trigger.tsx │ │ │ │ │ │ │ ├── UploadPanel.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── setting/ │ │ │ │ │ │ │ ├── SettingRight.tsx │ │ │ │ │ │ │ ├── SettingRightTitle.tsx │ │ │ │ │ │ │ ├── access-token/ │ │ │ │ │ │ │ │ ├── AccessTokenList.tsx │ │ │ │ │ │ │ │ ├── PersonAccessTokenForm.tsx │ │ │ │ │ │ │ │ ├── PersonAccessTokenPage.tsx │ │ │ │ │ │ │ │ └── form/ │ │ │ │ │ │ │ │ ├── AccessList.tsx │ │ │ │ │ │ │ │ ├── AccessSelect.tsx │ │ │ │ │ │ │ │ ├── AccessTokenForm.tsx │ │ │ │ │ │ │ │ ├── AccessTokenFormEdit.tsx │ │ │ │ │ │ │ │ ├── ExpirationSelect.tsx │ │ │ │ │ │ │ │ └── RefreshToken.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── FormItem.tsx │ │ │ │ │ │ │ │ ├── FormPageLayout.tsx │ │ │ │ │ │ │ │ ├── RequireCom.tsx │ │ │ │ │ │ │ │ └── ScopesSelect.tsx │ │ │ │ │ │ │ ├── oauth-app/ │ │ │ │ │ │ │ │ ├── OAuthAppDecisionPage.tsx │ │ │ │ │ │ │ │ ├── OAuthAppPage.tsx │ │ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ │ │ └── manage/ │ │ │ │ │ │ │ │ ├── CallbackEditor.tsx │ │ │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ │ │ ├── OAuthAppEdit.tsx │ │ │ │ │ │ │ │ ├── OAuthAppForm.tsx │ │ │ │ │ │ │ │ └── OAuthAppNew.tsx │ │ │ │ │ │ │ ├── plugin/ │ │ │ │ │ │ │ │ ├── MarkDownEditor.tsx │ │ │ │ │ │ │ │ ├── PluginEdit.tsx │ │ │ │ │ │ │ │ ├── PluginList.tsx │ │ │ │ │ │ │ │ ├── PluginNew.tsx │ │ │ │ │ │ │ │ ├── PluginPage.tsx │ │ │ │ │ │ │ │ ├── component/ │ │ │ │ │ │ │ │ │ ├── JsonEditor.tsx │ │ │ │ │ │ │ │ │ ├── LogoEditor.tsx │ │ │ │ │ │ │ │ │ ├── NewSecret.tsx │ │ │ │ │ │ │ │ │ ├── PositionSelector.tsx │ │ │ │ │ │ │ │ │ ├── StatusBadge.tsx │ │ │ │ │ │ │ │ │ └── StatusDot.tsx │ │ │ │ │ │ │ │ └── hooks/ │ │ │ │ │ │ │ │ └── useStatusStatic.ts │ │ │ │ │ │ │ └── query-builder/ │ │ │ │ │ │ │ ├── AIContextPanel.tsx │ │ │ │ │ │ │ ├── FilterBuilder.tsx │ │ │ │ │ │ │ ├── PreviewScript.tsx │ │ │ │ │ │ │ ├── PreviewTable.tsx │ │ │ │ │ │ │ ├── QueryBuilder.tsx │ │ │ │ │ │ │ ├── SearchBuilder.tsx │ │ │ │ │ │ │ ├── SortBuilder.tsx │ │ │ │ │ │ │ ├── ViewBuilder.tsx │ │ │ │ │ │ │ └── useTransformFieldKey.ts │ │ │ │ │ │ ├── share/ │ │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ │ ├── BaseShareAuthPage.tsx │ │ │ │ │ │ │ │ └── share-base-ssr.ts │ │ │ │ │ │ │ └── view/ │ │ │ │ │ │ │ ├── AuthPage.tsx │ │ │ │ │ │ │ ├── EmbedFooter.tsx │ │ │ │ │ │ │ ├── ShareTablePermissionProvider.tsx │ │ │ │ │ │ │ ├── ShareView.tsx │ │ │ │ │ │ │ ├── ShareViewPage.tsx │ │ │ │ │ │ │ └── component/ │ │ │ │ │ │ │ ├── calendar/ │ │ │ │ │ │ │ │ ├── CalendarView.tsx │ │ │ │ │ │ │ │ └── toolbar/ │ │ │ │ │ │ │ │ ├── Toolbar.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── form/ │ │ │ │ │ │ │ │ ├── FormView.tsx │ │ │ │ │ │ │ │ └── FormViewBase.tsx │ │ │ │ │ │ │ ├── gallery/ │ │ │ │ │ │ │ │ ├── GalleryView.tsx │ │ │ │ │ │ │ │ └── toolbar/ │ │ │ │ │ │ │ │ ├── Toolbar.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── grid/ │ │ │ │ │ │ │ │ ├── GridView.tsx │ │ │ │ │ │ │ │ ├── GridViewBase.tsx │ │ │ │ │ │ │ │ ├── aggregation/ │ │ │ │ │ │ │ │ │ ├── AggregationProvider.tsx │ │ │ │ │ │ │ │ │ ├── GroupPointProvider.tsx │ │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ │ └── toolbar/ │ │ │ │ │ │ │ │ ├── Sort.tsx │ │ │ │ │ │ │ │ ├── Toolbar.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── kanban/ │ │ │ │ │ │ │ │ ├── KanbanView.tsx │ │ │ │ │ │ │ │ └── toolbar/ │ │ │ │ │ │ │ │ ├── Toolbar.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── plugin/ │ │ │ │ │ │ │ │ └── SharePluginView.tsx │ │ │ │ │ │ │ └── share-view-filter/ │ │ │ │ │ │ │ ├── FilterUser.tsx │ │ │ │ │ │ │ ├── ShareViewFilter.tsx │ │ │ │ │ │ │ ├── filter-link/ │ │ │ │ │ │ │ │ ├── FilterLink.tsx │ │ │ │ │ │ │ │ ├── FilterLinkSelectList.tsx │ │ │ │ │ │ │ │ ├── FilterLinkSelectTrigger.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── space/ │ │ │ │ │ │ │ ├── BaseCard.tsx │ │ │ │ │ │ │ ├── BaseItem.tsx │ │ │ │ │ │ │ ├── BaseList.tsx │ │ │ │ │ │ │ ├── ColorBg.tsx │ │ │ │ │ │ │ ├── DraggableBaseGrid.tsx │ │ │ │ │ │ │ ├── DraggableBaseRows.tsx │ │ │ │ │ │ │ ├── FreshSettingGuideDialog.tsx │ │ │ │ │ │ │ ├── NoBasesPlaceholder.tsx │ │ │ │ │ │ │ ├── NoSpacesPlaceholder.tsx │ │ │ │ │ │ │ ├── RecentlyBase.tsx │ │ │ │ │ │ │ ├── SharedBasePage.tsx │ │ │ │ │ │ │ ├── SpaceCard.tsx │ │ │ │ │ │ │ ├── SpaceInnerPage.tsx │ │ │ │ │ │ │ ├── SpacePage.tsx │ │ │ │ │ │ │ ├── component/ │ │ │ │ │ │ │ │ ├── BaseActionTrigger.tsx │ │ │ │ │ │ │ │ ├── EditableSpaceSelect.tsx │ │ │ │ │ │ │ │ ├── SpaceActionTrigger.tsx │ │ │ │ │ │ │ │ └── upload-panel/ │ │ │ │ │ │ │ │ ├── ImportLogPanel.tsx │ │ │ │ │ │ │ │ ├── Process.tsx │ │ │ │ │ │ │ │ ├── Trigger.tsx │ │ │ │ │ │ │ │ ├── UploadPanel.tsx │ │ │ │ │ │ │ │ ├── UploadPanelDialog.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── useSpaceList.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── space-side-bar/ │ │ │ │ │ │ │ │ ├── ItemButton.tsx │ │ │ │ │ │ │ │ ├── PinItem.tsx │ │ │ │ │ │ │ │ ├── PinList.tsx │ │ │ │ │ │ │ │ ├── SpaceInnerSideBar.tsx │ │ │ │ │ │ │ │ ├── SpaceItem.tsx │ │ │ │ │ │ │ │ ├── SpaceList.tsx │ │ │ │ │ │ │ │ ├── SpaceOperation.tsx │ │ │ │ │ │ │ │ ├── SpaceQuickSearch.tsx │ │ │ │ │ │ │ │ ├── SpaceSideBar.tsx │ │ │ │ │ │ │ │ ├── SpaceSwitcher.tsx │ │ │ │ │ │ │ │ └── StarButton.tsx │ │ │ │ │ │ │ ├── useBaseList.tsx │ │ │ │ │ │ │ ├── usePinMap.ts │ │ │ │ │ │ │ └── useSpaceListOrdered.tsx │ │ │ │ │ │ ├── space-setting/ │ │ │ │ │ │ │ ├── SpaceInnerSettingModal.tsx │ │ │ │ │ │ │ ├── collaborator/ │ │ │ │ │ │ │ │ ├── CollaboratorPage.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── general/ │ │ │ │ │ │ │ │ ├── GeneralPage.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── integration/ │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ ├── AiConfig.tsx │ │ │ │ │ │ │ ├── IntegrationCard.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── table/ │ │ │ │ │ │ │ ├── FailAlert.tsx │ │ │ │ │ │ │ ├── Table.tsx │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── use-aggregations-query.ts │ │ │ │ │ │ │ │ ├── use-import-status.ts │ │ │ │ │ │ │ │ ├── use-row-count-query.ts │ │ │ │ │ │ │ │ └── use-view-error-handler.tsx │ │ │ │ │ │ │ ├── store/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── use-locked-view-tip-store.ts │ │ │ │ │ │ │ └── table-header/ │ │ │ │ │ │ │ ├── AddPluginView.tsx │ │ │ │ │ │ │ ├── AddView.tsx │ │ │ │ │ │ │ ├── BaseShare.tsx │ │ │ │ │ │ │ ├── Collaborators.tsx │ │ │ │ │ │ │ ├── LockedViewTip.tsx │ │ │ │ │ │ │ ├── TableHeader.tsx │ │ │ │ │ │ │ ├── TableInfo.tsx │ │ │ │ │ │ │ └── publish-base/ │ │ │ │ │ │ │ ├── AppPublishContext.tsx │ │ │ │ │ │ │ ├── NodeSelect.tsx │ │ │ │ │ │ │ ├── NodeTreeSelect.tsx │ │ │ │ │ │ │ ├── PublishBaseDialog.tsx │ │ │ │ │ │ │ └── UnpublishedAppsDialog.tsx │ │ │ │ │ │ ├── table-list/ │ │ │ │ │ │ │ ├── DraggableList.tsx │ │ │ │ │ │ │ ├── NoDraggableList.tsx │ │ │ │ │ │ │ ├── TableList.tsx │ │ │ │ │ │ │ ├── TableListItem.tsx │ │ │ │ │ │ │ ├── TableOperation.tsx │ │ │ │ │ │ │ ├── useAddTable.ts │ │ │ │ │ │ │ └── useTableHref.tsx │ │ │ │ │ │ ├── trash/ │ │ │ │ │ │ │ ├── BaseTrashPage.tsx │ │ │ │ │ │ │ ├── SpaceInnerTrashModal.tsx │ │ │ │ │ │ │ ├── SpaceTrashPage.tsx │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ ├── TableTrash.tsx │ │ │ │ │ │ │ └── TableTrashDialog.tsx │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── View.tsx │ │ │ │ │ │ ├── calendar/ │ │ │ │ │ │ │ ├── CalendarView.tsx │ │ │ │ │ │ │ ├── CalendarViewBase.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── AddDateFieldDialog.tsx │ │ │ │ │ │ │ │ ├── AddEventButton.tsx │ │ │ │ │ │ │ │ ├── Calendar.tsx │ │ │ │ │ │ │ │ ├── CalendarConfig.tsx │ │ │ │ │ │ │ │ ├── EventList.tsx │ │ │ │ │ │ │ │ ├── EventListContainer.tsx │ │ │ │ │ │ │ │ └── EventMenu.tsx │ │ │ │ │ │ │ ├── context/ │ │ │ │ │ │ │ │ ├── CalendarContext.ts │ │ │ │ │ │ │ │ ├── CalendarProvider.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── useCalendar.ts │ │ │ │ │ │ │ │ ├── useCalendarFields.ts │ │ │ │ │ │ │ │ └── useEventMenuStore.ts │ │ │ │ │ │ │ ├── type.ts │ │ │ │ │ │ │ └── util.ts │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ ├── field/ │ │ │ │ │ │ │ ├── FieldSetting.tsx │ │ │ │ │ │ │ └── useFieldSettingStore.ts │ │ │ │ │ │ ├── form/ │ │ │ │ │ │ │ ├── FormView.tsx │ │ │ │ │ │ │ ├── FormViewBase.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── BrandFooter.tsx │ │ │ │ │ │ │ │ ├── Drag.tsx │ │ │ │ │ │ │ │ ├── FormCellEditor.tsx │ │ │ │ │ │ │ │ ├── FormEditor.tsx │ │ │ │ │ │ │ │ ├── FormEditorMain.tsx │ │ │ │ │ │ │ │ ├── FormField.tsx │ │ │ │ │ │ │ │ ├── FormFieldEditor.tsx │ │ │ │ │ │ │ │ ├── FormPreviewer.tsx │ │ │ │ │ │ │ │ ├── FormSidebar.tsx │ │ │ │ │ │ │ │ ├── FromBody.tsx │ │ │ │ │ │ │ │ ├── ShareUserEditor.tsx │ │ │ │ │ │ │ │ ├── SortableItem.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── share-link-editor/ │ │ │ │ │ │ │ │ ├── FormLinkEditor.tsx │ │ │ │ │ │ │ │ └── LinkRecordList.tsx │ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ │ └── util.ts │ │ │ │ │ │ ├── gallery/ │ │ │ │ │ │ │ ├── GalleryView.tsx │ │ │ │ │ │ │ ├── GalleryViewBase.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── Card.tsx │ │ │ │ │ │ │ │ ├── CardCarousel.tsx │ │ │ │ │ │ │ │ ├── SortableItem.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── context/ │ │ │ │ │ │ │ │ ├── GalleryContext.ts │ │ │ │ │ │ │ │ ├── GalleryProvider.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── useCacheRecords.ts │ │ │ │ │ │ │ │ └── useGallery.ts │ │ │ │ │ │ │ ├── type.ts │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── card.ts │ │ │ │ │ │ │ ├── columns.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── grid/ │ │ │ │ │ │ │ ├── DomBox.tsx │ │ │ │ │ │ │ ├── GridView.tsx │ │ │ │ │ │ │ ├── GridViewBase.tsx │ │ │ │ │ │ │ ├── GridViewBaseInner.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── AiAutoFillDialogContainer.tsx │ │ │ │ │ │ │ │ ├── AiGenerateButton.tsx │ │ │ │ │ │ │ │ ├── ConfirmNewRecords.tsx │ │ │ │ │ │ │ │ ├── FieldMenu.tsx │ │ │ │ │ │ │ │ ├── GroupHeaderMenu.tsx │ │ │ │ │ │ │ │ ├── PluginMenu.tsx │ │ │ │ │ │ │ │ ├── PrefillingRowContainer.tsx │ │ │ │ │ │ │ │ ├── PresortRowContainer.tsx │ │ │ │ │ │ │ │ ├── RecordMenu.tsx │ │ │ │ │ │ │ │ ├── ResetClickCountButton.tsx │ │ │ │ │ │ │ │ ├── StatisticMenu.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── const.ts │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── useCollaborate.ts │ │ │ │ │ │ │ │ ├── useIsSelectionLoaded.ts │ │ │ │ │ │ │ │ ├── useSelectionOperation.ts │ │ │ │ │ │ │ │ └── useSelectionStore.ts │ │ │ │ │ │ │ ├── useGridSearchStore.ts │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── computeFrozenFields.ts │ │ │ │ │ │ │ ├── copyAndPaste.ts │ │ │ │ │ │ │ ├── fill.ts │ │ │ │ │ │ │ ├── getSyncCopyData.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── selection.ts │ │ │ │ │ │ │ ├── selectionViewQuery.spec.ts │ │ │ │ │ │ │ └── selectionViewQuery.ts │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ ├── useContextMenu.ts │ │ │ │ │ │ │ └── useToolbarChange.ts │ │ │ │ │ │ ├── kanban/ │ │ │ │ │ │ │ ├── KanbanView.tsx │ │ │ │ │ │ │ ├── KanbanViewBase.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── KanbanCard.tsx │ │ │ │ │ │ │ │ ├── KanbanContainer.tsx │ │ │ │ │ │ │ │ ├── KanbanStack.tsx │ │ │ │ │ │ │ │ ├── KanbanStackContainer.tsx │ │ │ │ │ │ │ │ ├── KanbanStackCreator.tsx │ │ │ │ │ │ │ │ ├── KanbanStackHeader.tsx │ │ │ │ │ │ │ │ ├── KanbanStackTitle.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── interface.ts │ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ │ ├── context/ │ │ │ │ │ │ │ │ ├── KanbanContext.ts │ │ │ │ │ │ │ │ ├── KanbanProvider.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── useInView.ts │ │ │ │ │ │ │ │ └── useKanban.ts │ │ │ │ │ │ │ ├── store/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── useKanbanStackCollapsed.ts │ │ │ │ │ │ │ ├── type.ts │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── card.ts │ │ │ │ │ │ │ ├── drag.ts │ │ │ │ │ │ │ ├── filter.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── list/ │ │ │ │ │ │ │ ├── DraggableWrapper.tsx │ │ │ │ │ │ │ ├── ExpandViewList.tsx │ │ │ │ │ │ │ ├── PinViewItem.tsx │ │ │ │ │ │ │ ├── ViewList.tsx │ │ │ │ │ │ │ ├── ViewListItem.tsx │ │ │ │ │ │ │ ├── useAddView.ts │ │ │ │ │ │ │ └── useDeleteView.ts │ │ │ │ │ │ ├── plugin/ │ │ │ │ │ │ │ └── PluginView.tsx │ │ │ │ │ │ ├── search/ │ │ │ │ │ │ │ ├── SearchButton.tsx │ │ │ │ │ │ │ ├── SearchCommand.tsx │ │ │ │ │ │ │ └── SearchCountPagination.tsx │ │ │ │ │ │ ├── tool-bar/ │ │ │ │ │ │ │ ├── APIDialog.tsx │ │ │ │ │ │ │ ├── APIDialogContent.tsx │ │ │ │ │ │ │ ├── CalendarToolBar.tsx │ │ │ │ │ │ │ ├── FormToolBar.tsx │ │ │ │ │ │ │ ├── GalleryToolBar.tsx │ │ │ │ │ │ │ ├── GridToolBar.tsx │ │ │ │ │ │ │ ├── KanbanToolBar.tsx │ │ │ │ │ │ │ ├── Others.tsx │ │ │ │ │ │ │ ├── SharePopover.tsx │ │ │ │ │ │ │ ├── ShareViewContent.tsx │ │ │ │ │ │ │ ├── ToolBarButton.tsx │ │ │ │ │ │ │ ├── UnifiedShareDialog.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── CalendarViewOperators.tsx │ │ │ │ │ │ │ │ ├── CoverFieldSelect.tsx │ │ │ │ │ │ │ │ ├── GalleryViewOperators.tsx │ │ │ │ │ │ │ │ ├── GridViewOperators.tsx │ │ │ │ │ │ │ │ ├── KanbanViewOperators.tsx │ │ │ │ │ │ │ │ ├── PersonalViewSwitch.tsx │ │ │ │ │ │ │ │ ├── UndoRedoButtons.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── useToolBarStore.tsx │ │ │ │ │ │ │ ├── hook/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── useViewConfigurable.ts │ │ │ │ │ │ │ ├── store/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ └── useFormModeStore.ts │ │ │ │ │ │ │ └── useViewFilterLinkContext.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Chart/ │ │ │ │ │ │ │ ├── Chart.tsx │ │ │ │ │ │ │ ├── bar.ts │ │ │ │ │ │ │ ├── base.ts │ │ │ │ │ │ │ ├── createChart.ts │ │ │ │ │ │ │ ├── line.tsx │ │ │ │ │ │ │ ├── pie.tsx │ │ │ │ │ │ │ └── type.ts │ │ │ │ │ │ ├── CopyButton.tsx │ │ │ │ │ │ ├── DownloadProgressToast.tsx │ │ │ │ │ │ ├── LanguagePicker.tsx │ │ │ │ │ │ ├── LicenseExpiryBanner.tsx │ │ │ │ │ │ ├── MenuDeleteItem.tsx │ │ │ │ │ │ ├── PublicOperateButton.tsx │ │ │ │ │ │ ├── ShareSelectSpaceDialog.tsx │ │ │ │ │ │ ├── SideBarFooter.tsx │ │ │ │ │ │ ├── SpaceSettingContainer.tsx │ │ │ │ │ │ ├── TemplateSelectSpaceDialog.tsx │ │ │ │ │ │ ├── ThemePicker.tsx │ │ │ │ │ │ ├── Welcom.tsx │ │ │ │ │ │ ├── billing/ │ │ │ │ │ │ │ ├── Level.tsx │ │ │ │ │ │ │ ├── LevelWithUpgrade.tsx │ │ │ │ │ │ │ ├── Status.tsx │ │ │ │ │ │ │ ├── UpgradeWrapper.tsx │ │ │ │ │ │ │ └── UsageLimitModal.tsx │ │ │ │ │ │ ├── collaborator/ │ │ │ │ │ │ │ ├── share/ │ │ │ │ │ │ │ │ ├── CollaboratorsDialog.tsx │ │ │ │ │ │ │ │ ├── ShareBaseContent.tsx │ │ │ │ │ │ │ │ ├── ShareBaseDialog.tsx │ │ │ │ │ │ │ │ ├── ShareBasePopover.tsx │ │ │ │ │ │ │ │ └── common/ │ │ │ │ │ │ │ │ ├── AuthorityTips.tsx │ │ │ │ │ │ │ │ ├── CollaboratorButton.tsx │ │ │ │ │ │ │ │ ├── CollaboratorTable.tsx │ │ │ │ │ │ │ │ ├── DebounceInput.tsx │ │ │ │ │ │ │ │ ├── EmailContent.tsx │ │ │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ │ │ ├── InviteEmailButton.tsx │ │ │ │ │ │ │ │ ├── InviteLinkButton.tsx │ │ │ │ │ │ │ │ ├── InviteOrgButton.tsx │ │ │ │ │ │ │ │ ├── LinkContent.tsx │ │ │ │ │ │ │ │ ├── OrgContent.tsx │ │ │ │ │ │ │ │ └── PreviewCollaborators.tsx │ │ │ │ │ │ │ └── space/ │ │ │ │ │ │ │ ├── InviteSpaceContent.tsx │ │ │ │ │ │ │ └── InviteSpacePopover.tsx │ │ │ │ │ │ ├── collaborator-manage/ │ │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ │ ├── BaseInvite.tsx │ │ │ │ │ │ │ │ ├── BaseInviteLink.tsx │ │ │ │ │ │ │ │ └── useFilteredRoleStatic.ts │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── Collaborator.tsx │ │ │ │ │ │ │ │ ├── CollaboratorAdd.tsx │ │ │ │ │ │ │ │ ├── CollaboratorItem.tsx │ │ │ │ │ │ │ │ ├── CollaboratorList.tsx │ │ │ │ │ │ │ │ ├── Invite.tsx │ │ │ │ │ │ │ │ ├── InviteLinkItem.tsx │ │ │ │ │ │ │ │ └── RoleSelect.tsx │ │ │ │ │ │ │ ├── space/ │ │ │ │ │ │ │ │ ├── Collaborators.tsx │ │ │ │ │ │ │ │ ├── SpaceInvite.tsx │ │ │ │ │ │ │ │ ├── SpaceInviteLink.tsx │ │ │ │ │ │ │ │ └── useFilteredRoleStatic.ts │ │ │ │ │ │ │ ├── space-inner/ │ │ │ │ │ │ │ │ └── Collaborators.tsx │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ ├── useRoleStatic.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── download-attachments/ │ │ │ │ │ │ │ ├── CellDownloadHandler.tsx │ │ │ │ │ │ │ ├── DownloadAllAttachmentsDialog.tsx │ │ │ │ │ │ │ ├── DownloadContent.tsx │ │ │ │ │ │ │ ├── DynamicDownloadContent.tsx │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── useDownloadAttachmentsStore.ts │ │ │ │ │ │ ├── emoji/ │ │ │ │ │ │ │ ├── Emoji.tsx │ │ │ │ │ │ │ └── EmojiPicker.tsx │ │ │ │ │ │ ├── expand-record-container/ │ │ │ │ │ │ │ ├── ExpandRecordContainer.tsx │ │ │ │ │ │ │ ├── ExpandRecordContainerBase.tsx │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── field-setting/ │ │ │ │ │ │ │ ├── DefaultValue.tsx │ │ │ │ │ │ │ ├── DynamicFieldEditor.tsx │ │ │ │ │ │ │ ├── FieldEditor.spec.tsx │ │ │ │ │ │ │ ├── FieldEditor.tsx │ │ │ │ │ │ │ ├── FieldOptions.tsx │ │ │ │ │ │ │ ├── FieldSetting.tsx │ │ │ │ │ │ │ ├── SelectFieldType.tsx │ │ │ │ │ │ │ ├── SelectTable.tsx │ │ │ │ │ │ │ ├── SystemInfo.tsx │ │ │ │ │ │ │ ├── dialog/ │ │ │ │ │ │ │ │ └── AiAutoFillDialog.tsx │ │ │ │ │ │ │ ├── field-ai-config/ │ │ │ │ │ │ │ │ ├── AttachmentFieldAiConfig.tsx │ │ │ │ │ │ │ │ ├── DateFieldAiConfig.tsx │ │ │ │ │ │ │ │ ├── FieldAiConfig.tsx │ │ │ │ │ │ │ │ ├── MultipleSelectFieldAiConfig.tsx │ │ │ │ │ │ │ │ ├── RatingFieldAiConfig.tsx │ │ │ │ │ │ │ │ ├── SingleSelectFieldAiConfig.tsx │ │ │ │ │ │ │ │ ├── TextFieldAiConfig.tsx │ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ │ ├── field-select/ │ │ │ │ │ │ │ │ │ │ ├── FieldSelect.tsx │ │ │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ │ └── prompt-editor/ │ │ │ │ │ │ │ │ │ ├── PromptEditor.tsx │ │ │ │ │ │ │ │ │ ├── PromptEditorContainer.tsx │ │ │ │ │ │ │ │ │ ├── extensions/ │ │ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ │ │ ├── theme.ts │ │ │ │ │ │ │ │ │ │ └── variable.ts │ │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── field-delete-confirm-dialog/ │ │ │ │ │ │ │ │ ├── AffectedFieldsList.tsx │ │ │ │ │ │ │ │ ├── FieldDeleteConfirmDialog.tsx │ │ │ │ │ │ │ │ ├── FieldSelectionList.tsx │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ │ └── useDeleteAnalysis.ts │ │ │ │ │ │ │ ├── field-validation/ │ │ │ │ │ │ │ │ └── FieldValidation.tsx │ │ │ │ │ │ │ ├── formatting/ │ │ │ │ │ │ │ │ ├── DatetimeFormatting.tsx │ │ │ │ │ │ │ │ ├── NumberFormatting.tsx │ │ │ │ │ │ │ │ ├── TimeZoneFormatting.tsx │ │ │ │ │ │ │ │ └── UnionFormatting.tsx │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── useDefaultFieldName.ts │ │ │ │ │ │ │ │ ├── useUpdateConditionalLookupOptions.ts │ │ │ │ │ │ │ │ ├── useUpdateLookupOptions.spec.ts │ │ │ │ │ │ │ │ └── useUpdateLookupOptions.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── lookup-options/ │ │ │ │ │ │ │ │ ├── LookupFilterOptions.tsx │ │ │ │ │ │ │ │ └── LookupOptions.tsx │ │ │ │ │ │ │ ├── options/ │ │ │ │ │ │ │ │ ├── ButtonOptions.tsx │ │ │ │ │ │ │ │ ├── CheckboxOptions.tsx │ │ │ │ │ │ │ │ ├── ConditionalLookupOptions.tsx │ │ │ │ │ │ │ │ ├── ConditionalRollupOptions.tsx │ │ │ │ │ │ │ │ ├── CreatedTimeOptions.tsx │ │ │ │ │ │ │ │ ├── DateOptions.tsx │ │ │ │ │ │ │ │ ├── FormulaOptions.tsx │ │ │ │ │ │ │ │ ├── LastModifiedByOptions.tsx │ │ │ │ │ │ │ │ ├── LastModifiedTimeOptions.tsx │ │ │ │ │ │ │ │ ├── LinkOptions/ │ │ │ │ │ │ │ │ │ ├── LinkOptions.tsx │ │ │ │ │ │ │ │ │ ├── MoreLinkOptions.tsx │ │ │ │ │ │ │ │ │ ├── SelectTable.tsx │ │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ │ ├── LinkedRecordSortLimitConfig.tsx │ │ │ │ │ │ │ │ ├── LongTextOptions.tsx │ │ │ │ │ │ │ │ ├── NumberOptions.tsx │ │ │ │ │ │ │ │ ├── RatingOptions.tsx │ │ │ │ │ │ │ │ ├── RollupOptions.tsx │ │ │ │ │ │ │ │ ├── SelectOptions/ │ │ │ │ │ │ │ │ │ ├── ChoiceItem.tsx │ │ │ │ │ │ │ │ │ ├── ColorPicker.tsx │ │ │ │ │ │ │ │ │ ├── SelectDefaultValue.tsx │ │ │ │ │ │ │ │ │ ├── SelectOptions.tsx │ │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ │ ├── SingleLineTextOptions.tsx │ │ │ │ │ │ │ │ └── UserOptions.tsx │ │ │ │ │ │ │ ├── show-as/ │ │ │ │ │ │ │ │ ├── MultiNumberShowAs.tsx │ │ │ │ │ │ │ │ ├── SingleLineTextShowAs.tsx │ │ │ │ │ │ │ │ ├── SingleNumberShowAs.tsx │ │ │ │ │ │ │ │ └── UnionShowAs.tsx │ │ │ │ │ │ │ ├── type.ts │ │ │ │ │ │ │ └── useFieldTypeSubtitle.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── notifications/ │ │ │ │ │ │ │ ├── NotificationActionBar.tsx │ │ │ │ │ │ │ ├── NotificationIcon.tsx │ │ │ │ │ │ │ ├── NotificationItem.tsx │ │ │ │ │ │ │ ├── NotificationList.tsx │ │ │ │ │ │ │ ├── NotificationsManage.tsx │ │ │ │ │ │ │ └── notification-component/ │ │ │ │ │ │ │ ├── LinkNotification.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── oauth/ │ │ │ │ │ │ │ ├── OAuthLogo.tsx │ │ │ │ │ │ │ └── OAuthScope.tsx │ │ │ │ │ │ ├── plugin/ │ │ │ │ │ │ │ ├── ComponentPluginRender.tsx │ │ │ │ │ │ │ ├── IframePluginRender.tsx │ │ │ │ │ │ │ ├── PluginCenterDialog.tsx │ │ │ │ │ │ │ ├── PluginContent.tsx │ │ │ │ │ │ │ ├── PluginDetail.tsx │ │ │ │ │ │ │ ├── PluginHeader.tsx │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── iframe-url/ │ │ │ │ │ │ │ │ │ ├── useIframeUrl.tsx │ │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ │ ├── useIframeSize.tsx │ │ │ │ │ │ │ │ ├── useSelection.ts │ │ │ │ │ │ │ │ ├── useSyncBasePermissions.ts │ │ │ │ │ │ │ │ ├── useSyncSelection.ts │ │ │ │ │ │ │ │ ├── useSyncUIConfig.ts │ │ │ │ │ │ │ │ ├── useSyncUrlParams.tsx │ │ │ │ │ │ │ │ ├── useUIConfig.ts │ │ │ │ │ │ │ │ ├── useUIEvent.ts │ │ │ │ │ │ │ │ ├── useUrlParams.ts │ │ │ │ │ │ │ │ ├── useUtilsEvent.ts │ │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ │ └── getSelectionRecords.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── plugin-context-menu/ │ │ │ │ │ │ │ ├── PluginContextMenu.tsx │ │ │ │ │ │ │ ├── PluginContextMenuManageDialog.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── FloatPlugin.tsx │ │ │ │ │ │ │ │ ├── useFloatPluginPosition.tsx │ │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ │ └── position.ts │ │ │ │ │ │ │ └── useActiveMenuPlugin.ts │ │ │ │ │ │ ├── plugin-panel/ │ │ │ │ │ │ │ ├── PluginLayout.tsx │ │ │ │ │ │ │ ├── PluginPanel.tsx │ │ │ │ │ │ │ ├── PluginPanelContainer.tsx │ │ │ │ │ │ │ ├── PluginPanelEmpty.tsx │ │ │ │ │ │ │ ├── PluginPanelHeader.tsx │ │ │ │ │ │ │ ├── PluginPanelSelector.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── CreatePluginDialog.tsx │ │ │ │ │ │ │ │ ├── CreatePluginPanelDialog.tsx │ │ │ │ │ │ │ │ └── PluginItem.tsx │ │ │ │ │ │ │ └── hooks/ │ │ │ │ │ │ │ ├── useActivePluginPanelId.tsx │ │ │ │ │ │ │ ├── usePluginPanelStorage.ts │ │ │ │ │ │ │ └── usePluginPanelStore.ts │ │ │ │ │ │ ├── setting/ │ │ │ │ │ │ │ ├── Account.tsx │ │ │ │ │ │ │ ├── InteractionSelect.tsx │ │ │ │ │ │ │ ├── Notifications.tsx │ │ │ │ │ │ │ ├── SettingDialog.tsx │ │ │ │ │ │ │ ├── SettingTabShell.tsx │ │ │ │ │ │ │ ├── System.tsx │ │ │ │ │ │ │ ├── account/ │ │ │ │ │ │ │ │ ├── AddPassword.tsx │ │ │ │ │ │ │ │ ├── ChangeEmailDialog.tsx │ │ │ │ │ │ │ │ ├── ChangePasswordDialog.tsx │ │ │ │ │ │ │ │ └── DeleteAccountDialog.tsx │ │ │ │ │ │ │ ├── integration/ │ │ │ │ │ │ │ │ ├── Integration.tsx │ │ │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ │ │ ├── Container.tsx │ │ │ │ │ │ │ │ │ └── Header.tsx │ │ │ │ │ │ │ │ ├── third-party-integrations/ │ │ │ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ │ │ │ ├── Detail.tsx │ │ │ │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ │ │ │ └── RevokeButton.tsx │ │ │ │ │ │ │ │ └── user-integration/ │ │ │ │ │ │ │ │ ├── ActionMenu.tsx │ │ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ │ │ ├── NewIntegration.tsx │ │ │ │ │ │ │ │ ├── Rename.tsx │ │ │ │ │ │ │ │ └── provider/ │ │ │ │ │ │ │ │ ├── EmailItem.tsx │ │ │ │ │ │ │ │ └── SlackItem.tsx │ │ │ │ │ │ │ ├── oauth-app/ │ │ │ │ │ │ │ │ ├── OAuthAppSection.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── personal-access-token/ │ │ │ │ │ │ │ │ ├── PersonalAccessTokenSection.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ └── useSettingStore.ts │ │ │ │ │ │ ├── sidebar/ │ │ │ │ │ │ │ ├── SideBarScript.tsx │ │ │ │ │ │ │ ├── Sidebar.tsx │ │ │ │ │ │ │ ├── SidebarContent.tsx │ │ │ │ │ │ │ ├── SidebarHeader.tsx │ │ │ │ │ │ │ ├── SidebarHeaderLeft.tsx │ │ │ │ │ │ │ ├── useChatPanelStore.ts │ │ │ │ │ │ │ └── useSidebarStore.ts │ │ │ │ │ │ ├── space/ │ │ │ │ │ │ │ ├── CollaboratorAvatars.tsx │ │ │ │ │ │ │ ├── CreateBaseModal.tsx │ │ │ │ │ │ │ ├── DeleteSpaceConfirm.tsx │ │ │ │ │ │ │ ├── SpaceActionBar.tsx │ │ │ │ │ │ │ ├── SpaceAvatar.tsx │ │ │ │ │ │ │ ├── SpaceRenaming.tsx │ │ │ │ │ │ │ └── template/ │ │ │ │ │ │ │ ├── CategoryMenu.tsx │ │ │ │ │ │ │ ├── CategoryMenuItem.tsx │ │ │ │ │ │ │ ├── RecommendTemplate.tsx │ │ │ │ │ │ │ ├── TemplateCard.tsx │ │ │ │ │ │ │ ├── TemplateDetail.tsx │ │ │ │ │ │ │ ├── TemplateList.tsx │ │ │ │ │ │ │ ├── TemplateMain.tsx │ │ │ │ │ │ │ ├── TemplateModal.tsx │ │ │ │ │ │ │ ├── TemplatePreview.tsx │ │ │ │ │ │ │ ├── TemplatePreviewSheet.tsx │ │ │ │ │ │ │ ├── TemplateSheet.tsx │ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ └── use-space-id.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── toggle-side-bar/ │ │ │ │ │ │ │ ├── HoverWrapper.tsx │ │ │ │ │ │ │ ├── SheetWrapper.tsx │ │ │ │ │ │ │ └── constant.ts │ │ │ │ │ │ ├── upload-progress-panel/ │ │ │ │ │ │ │ ├── TaskItem.tsx │ │ │ │ │ │ │ ├── UploadProgressBubble.tsx │ │ │ │ │ │ │ ├── UploadProgressPanel.tsx │ │ │ │ │ │ │ ├── UploadTaskList.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── user/ │ │ │ │ │ │ │ ├── UserAvatar.tsx │ │ │ │ │ │ │ └── UserNav.tsx │ │ │ │ │ │ └── user-integration/ │ │ │ │ │ │ ├── ProviderLogo.tsx │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ ├── ShareContext.tsx │ │ │ │ │ │ └── StaticTextRegistryProvider.tsx │ │ │ │ │ ├── dashboard/ │ │ │ │ │ │ ├── DashboardGrid.tsx │ │ │ │ │ │ ├── DashboardHeader.tsx │ │ │ │ │ │ ├── DashboardMain.tsx │ │ │ │ │ │ ├── EmptyDashboard.tsx │ │ │ │ │ │ ├── Pages.tsx │ │ │ │ │ │ ├── TestBaseQuery.tsx │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AddPluginDialog.tsx │ │ │ │ │ │ │ ├── CreateDashboardDialog.tsx │ │ │ │ │ │ │ ├── DashboardSwitcher.tsx │ │ │ │ │ │ │ └── PluginItem.tsx │ │ │ │ │ │ └── hooks/ │ │ │ │ │ │ └── useIsExpandPlugin.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── useAI.ts │ │ │ │ │ │ ├── useAutoFavicon.tsx │ │ │ │ │ │ ├── useBaseResource.ts │ │ │ │ │ │ ├── useBaseUsage.ts │ │ │ │ │ │ ├── useBillingLevel.ts │ │ │ │ │ │ ├── useBillingLevelConfig.ts │ │ │ │ │ │ ├── useBrand.tsx │ │ │ │ │ │ ├── useCutDown.ts │ │ │ │ │ │ ├── useDisableAIAction.ts │ │ │ │ │ │ ├── useDownLoad.ts │ │ │ │ │ │ ├── useEnv.ts │ │ │ │ │ │ ├── useInitializationZodI18n.ts │ │ │ │ │ │ ├── useIsCloud.ts │ │ │ │ │ │ ├── useIsCommunity.ts │ │ │ │ │ │ ├── useIsEE.ts │ │ │ │ │ │ ├── useIsInIframe.ts │ │ │ │ │ │ ├── usePreviewUrl.ts │ │ │ │ │ │ ├── useSdkLocale.ts │ │ │ │ │ │ └── useSetting.ts │ │ │ │ │ ├── layouts/ │ │ │ │ │ │ ├── AdminLayout.tsx │ │ │ │ │ │ ├── AppLayout.tsx │ │ │ │ │ │ ├── BaseLayout.tsx │ │ │ │ │ │ ├── SettingLayout.tsx │ │ │ │ │ │ ├── ShareBaseLayout.tsx │ │ │ │ │ │ ├── SharedBaseLayout.tsx │ │ │ │ │ │ ├── SpaceInnerLayout.tsx │ │ │ │ │ │ ├── SpaceLayout.tsx │ │ │ │ │ │ ├── SpacePageTitle.tsx │ │ │ │ │ │ ├── SpaceSettingLayout.tsx │ │ │ │ │ │ ├── SpaceTrashLayout.tsx │ │ │ │ │ │ ├── TemplateBaseLayout.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── useSettingRoute.tsx │ │ │ │ │ ├── utils/ │ │ │ │ │ │ ├── clipboard.spec.ts │ │ │ │ │ │ ├── clipboard.ts │ │ │ │ │ │ ├── download-all-attachments.ts │ │ │ │ │ │ ├── file.ts │ │ │ │ │ │ ├── get-mod-key-str.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── init-axios.ts │ │ │ │ │ │ ├── is-https.ts │ │ │ │ │ │ ├── is-local.ts │ │ │ │ │ │ └── uploadFile.ts │ │ │ │ │ └── waitlist/ │ │ │ │ │ └── WaitlistPage.tsx │ │ │ │ ├── auth/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── DescContent.tsx │ │ │ │ │ │ ├── LayoutMain.tsx │ │ │ │ │ │ ├── Rectangles.tsx │ │ │ │ │ │ ├── SendVerificationButton.tsx │ │ │ │ │ │ ├── SignForm.tsx │ │ │ │ │ │ ├── SocialAuth.tsx │ │ │ │ │ │ ├── TeableFooter.tsx │ │ │ │ │ │ ├── Terms.tsx │ │ │ │ │ │ └── TurnstileWidget.tsx │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── ForgetPasswordPage.tsx │ │ │ │ │ │ ├── LoginPage.tsx │ │ │ │ │ │ └── ResetPasswordPage.tsx │ │ │ │ │ └── useDisallowSignUp.ts │ │ │ │ ├── i18n/ │ │ │ │ │ ├── auth.config.ts │ │ │ │ │ ├── automation.tsx │ │ │ │ │ ├── base-all.config.ts │ │ │ │ │ ├── base.config.ts │ │ │ │ │ ├── dashboard.config.ts │ │ │ │ │ ├── developer.config.ts │ │ │ │ │ ├── oauth-app.config.ts │ │ │ │ │ ├── personal-access-token.config.ts │ │ │ │ │ ├── setting-plugin.config.ts │ │ │ │ │ ├── setting.config.ts │ │ │ │ │ ├── share.config.ts │ │ │ │ │ ├── space.config.ts │ │ │ │ │ ├── system.config.ts │ │ │ │ │ └── table.config.ts │ │ │ │ └── system/ │ │ │ │ └── pages/ │ │ │ │ ├── ErrorPage.tsx │ │ │ │ ├── ForbiddenPage.tsx │ │ │ │ ├── HttpErrorPage.tsx │ │ │ │ ├── IllustrationPage.tsx │ │ │ │ ├── NotFoundPage.tsx │ │ │ │ ├── PaymentRequired.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── ErrorPage.test.tsx │ │ │ │ │ └── NotFoundPage.test.tsx │ │ │ │ └── index.ts │ │ │ ├── lib/ │ │ │ │ ├── emoji-color.ts │ │ │ │ ├── ensureLogin.ts │ │ │ │ ├── get-brand.ts │ │ │ │ ├── handleBase.ts │ │ │ │ ├── i18n/ │ │ │ │ │ ├── I18nNamespace.types.ts │ │ │ │ │ ├── acceptHeader.ts │ │ │ │ │ ├── getLocale.ts │ │ │ │ │ ├── getServerSideTranslations.ts │ │ │ │ │ ├── getTranslationsProps.ts │ │ │ │ │ ├── helper.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── staticPageLocale.ts │ │ │ │ ├── server-env.ts │ │ │ │ ├── space-role-checker.ts │ │ │ │ ├── type.ts │ │ │ │ ├── view-pages-data.ts │ │ │ │ ├── withAuthSSR.ts │ │ │ │ └── withEnv.ts │ │ │ ├── pages/ │ │ │ │ ├── 402.tsx │ │ │ │ ├── 403.tsx │ │ │ │ ├── 404.tsx │ │ │ │ ├── _app.tsx │ │ │ │ ├── _document.tsx │ │ │ │ ├── _error.tsx │ │ │ │ ├── _monitor/ │ │ │ │ │ ├── preview/ │ │ │ │ │ │ └── error-page.tsx │ │ │ │ │ └── sentry/ │ │ │ │ │ ├── csr-page.tsx │ │ │ │ │ └── ssr-page.tsx │ │ │ │ ├── admin/ │ │ │ │ │ ├── setting.tsx │ │ │ │ │ └── template.tsx │ │ │ │ ├── api/ │ │ │ │ │ └── _monitor/ │ │ │ │ │ ├── healthcheck.ts │ │ │ │ │ └── sentry.ts │ │ │ │ ├── auth/ │ │ │ │ │ ├── forget-password.tsx │ │ │ │ │ ├── login.tsx │ │ │ │ │ ├── reset-password.tsx │ │ │ │ │ └── signup.tsx │ │ │ │ ├── base/ │ │ │ │ │ └── [baseId]/ │ │ │ │ │ ├── [[...slug]].tsx │ │ │ │ │ ├── authority-matrix.tsx │ │ │ │ │ ├── design.tsx │ │ │ │ │ └── trash.tsx │ │ │ │ ├── developer/ │ │ │ │ │ └── tool/ │ │ │ │ │ └── query-builder.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── invite/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── oauth/ │ │ │ │ │ └── decision.tsx │ │ │ │ ├── setting/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── oauth-app.tsx │ │ │ │ │ ├── personal-access-token.tsx │ │ │ │ │ └── plugin.tsx │ │ │ │ ├── share/ │ │ │ │ │ └── [shareId]/ │ │ │ │ │ ├── base/ │ │ │ │ │ │ ├── [baseId]/ │ │ │ │ │ │ │ └── [[...slug]].tsx │ │ │ │ │ │ ├── auth.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── view/ │ │ │ │ │ ├── auth.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── space/ │ │ │ │ │ ├── [spaceId]/ │ │ │ │ │ │ └── setting/ │ │ │ │ │ │ ├── collaborator.tsx │ │ │ │ │ │ └── general.tsx │ │ │ │ │ ├── [spaceId].tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── shared-base.tsx │ │ │ │ │ └── trash.tsx │ │ │ │ ├── t/ │ │ │ │ │ └── [identifier].tsx │ │ │ │ └── waitlist/ │ │ │ │ └── index.tsx │ │ │ ├── proxy.ts │ │ │ ├── store/ │ │ │ │ ├── message.ts │ │ │ │ └── user.ts │ │ │ ├── styles/ │ │ │ │ ├── github-markdown.css │ │ │ │ └── global.css │ │ │ ├── themes/ │ │ │ │ ├── colors/ │ │ │ │ │ └── index.ts │ │ │ │ ├── shared/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── colors.test.ts │ │ │ │ │ ├── browser-fonts.js │ │ │ │ │ └── colors.js │ │ │ │ ├── tailwind/ │ │ │ │ │ └── tailwind.theme.js │ │ │ │ ├── type.ts │ │ │ │ └── utils.ts │ │ │ └── types.d/ │ │ │ ├── i18next.d.ts │ │ │ ├── next-i18next.d.ts │ │ │ ├── react-svgr.d.ts │ │ │ └── umami.d.ts │ │ ├── tailwind.config.js │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsconfig.scripts.json │ │ ├── turbopack-empty-stub.js │ │ └── vitest.config.ts │ └── playground/ │ ├── .cta.json │ ├── .cursorrules │ ├── .gitignore │ ├── .vscode/ │ │ └── settings.json │ ├── README.md │ ├── components.json │ ├── package.json │ ├── src/ │ │ ├── components/ │ │ │ ├── playground/ │ │ │ │ ├── ComputedTasksPanel.tsx │ │ │ │ ├── CreateTableDropdown.tsx │ │ │ │ ├── ExplainResultPanel.tsx │ │ │ │ ├── FieldCreateDialog.tsx │ │ │ │ ├── FieldForm.tsx │ │ │ │ ├── FieldFormOptions.tsx │ │ │ │ ├── ImportCsvDialog.tsx │ │ │ │ ├── LinkFieldLabel.tsx │ │ │ │ ├── LogPanel.tsx │ │ │ │ ├── MetaCheckPanel.tsx │ │ │ │ ├── PlaygroundRecordRoute.tsx │ │ │ │ ├── PlaygroundShell.tsx │ │ │ │ ├── PlaygroundTableRoute.tsx │ │ │ │ ├── RecordCreateDialog.tsx │ │ │ │ ├── RecordDeleteDialog.tsx │ │ │ │ ├── RecordUpdateDialog.tsx │ │ │ │ ├── SchemaCheckPanel.tsx │ │ │ │ ├── TableMetaPage.tsx │ │ │ │ ├── UnderlyingDataPanel.tsx │ │ │ │ ├── field-inputs/ │ │ │ │ │ ├── CheckboxFieldInput.tsx │ │ │ │ │ ├── DateFieldInput.tsx │ │ │ │ │ ├── DisabledFieldInput.tsx │ │ │ │ │ ├── LinkFieldInput.tsx │ │ │ │ │ ├── NumberFieldInput.tsx │ │ │ │ │ ├── RatingFieldInput.tsx │ │ │ │ │ ├── SelectFieldInput.tsx │ │ │ │ │ ├── TextFieldInput.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── field-options/ │ │ │ │ │ ├── ButtonOptions.tsx │ │ │ │ │ ├── CheckboxOptions.tsx │ │ │ │ │ ├── ConditionBuilder.tsx │ │ │ │ │ ├── ConditionalLookupOptions.tsx │ │ │ │ │ ├── ConditionalRollupOptions.tsx │ │ │ │ │ ├── DateOptions.tsx │ │ │ │ │ ├── FormulaOptions.tsx │ │ │ │ │ ├── LinkOptions.tsx │ │ │ │ │ ├── LookupOptions.tsx │ │ │ │ │ ├── NumberOptions.tsx │ │ │ │ │ ├── RatingOptions.tsx │ │ │ │ │ ├── RollupOptions.tsx │ │ │ │ │ ├── SelectOptions.tsx │ │ │ │ │ ├── SingleLineTextOptions.tsx │ │ │ │ │ └── UserOptions.tsx │ │ │ │ ├── fieldOptionsVisitor.tsx │ │ │ │ └── recordValueVisitor.tsx │ │ │ └── ui/ │ │ │ ├── alert-dialog.tsx │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── calendar.tsx │ │ │ ├── card.tsx │ │ │ ├── checkbox.tsx │ │ │ ├── command.tsx │ │ │ ├── context-menu.tsx │ │ │ ├── data-table.tsx │ │ │ ├── date-picker.tsx │ │ │ ├── dialog.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── form.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── popover.tsx │ │ │ ├── radio-group.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── sheet.tsx │ │ │ ├── sidebar.tsx │ │ │ ├── skeleton.tsx │ │ │ ├── slider.tsx │ │ │ ├── switch.tsx │ │ │ ├── table.tsx │ │ │ ├── tabs.tsx │ │ │ ├── textarea.tsx │ │ │ └── tooltip.tsx │ │ ├── hooks/ │ │ │ ├── use-mobile.ts │ │ │ ├── useLogStream.ts │ │ │ ├── useRecord.ts │ │ │ └── useRecords.ts │ │ ├── integrations/ │ │ │ ├── otel/ │ │ │ │ └── client.ts │ │ │ └── tanstack-query/ │ │ │ ├── devtools.tsx │ │ │ └── root-provider.tsx │ │ ├── lib/ │ │ │ ├── broadcastChannel.ts │ │ │ ├── fieldTypeIcons.ts │ │ │ ├── nuqs/ │ │ │ │ └── tanstackRouterAdapter.tsx │ │ │ ├── orpc/ │ │ │ │ ├── OrpcClientContext.tsx │ │ │ │ ├── RemoteOrpcProvider.tsx │ │ │ │ └── SandboxOrpcProvider.tsx │ │ │ ├── orpcClient.ts │ │ │ ├── playground/ │ │ │ │ ├── constants.ts │ │ │ │ ├── databaseUrl.ts │ │ │ │ └── environment.ts │ │ │ ├── sandboxContainer.ts │ │ │ ├── sandboxOrpcClient.ts │ │ │ ├── shareDb.ts │ │ │ └── utils.ts │ │ ├── polyfill.ts │ │ ├── router.tsx │ │ ├── routes/ │ │ │ ├── $baseId.$tableId.$recordId.tsx │ │ │ ├── $baseId.$tableId.tsx │ │ │ ├── $baseId.tsx │ │ │ ├── __root.tsx │ │ │ ├── api.computed-tasks.$taskId.retry-now.ts │ │ │ ├── api.computed-tasks.dead-letters.$taskId.replay.ts │ │ │ ├── api.computed-tasks.dead-letters.$taskId.ts │ │ │ ├── api.computed-tasks.dead-letters.ts │ │ │ ├── api.computed-tasks.outbox.ts │ │ │ ├── api.db.check.ts │ │ │ ├── api.logs.stream.ts │ │ │ ├── api.meta.$tableId.check.stream.ts │ │ │ ├── api.rpc.$.ts │ │ │ ├── api.schema.$tableId.check.stream.ts │ │ │ ├── api.underlying.$tableId.ts │ │ │ ├── computed-tasks.tsx │ │ │ ├── index.tsx │ │ │ └── sandbox/ │ │ │ ├── $baseId.$tableId.$recordId.tsx │ │ │ ├── $baseId.$tableId.tsx │ │ │ ├── $baseId.tsx │ │ │ └── index.tsx │ │ ├── server/ │ │ │ ├── otel.ts │ │ │ ├── playgroundContainer.ts │ │ │ ├── playgroundDbContext.ts │ │ │ ├── playgroundLogger.ts │ │ │ ├── shareDbServer.ts │ │ │ ├── traceContext.ts │ │ │ ├── traceResponseHeaders.ts │ │ │ └── v2OrpcRouter.ts │ │ ├── server.ts │ │ ├── styles.css │ │ └── types/ │ │ └── sharedb-pubsub.d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── commitlint.config.js ├── crowdin.yml ├── docker-bake.hcl ├── dockers/ │ ├── cache-redis.yml │ ├── database-postgres.yml │ ├── examples/ │ │ ├── cluster/ │ │ │ ├── README.md │ │ │ ├── docker-compose.yaml │ │ │ └── gateway/ │ │ │ └── conf.d/ │ │ │ ├── default.conf │ │ │ └── minio.conf │ │ ├── docker-swarm/ │ │ │ ├── README.md │ │ │ ├── deploy.sh │ │ │ ├── docker-compose.app.yml │ │ │ ├── docker-compose.default.yml │ │ │ ├── docker-compose.gateway.yml │ │ │ ├── docker-compose.kit.yml │ │ │ └── gateway/ │ │ │ └── conf.d/ │ │ │ ├── default.conf │ │ │ └── minio.conf │ │ └── standalone/ │ │ ├── README.md │ │ └── docker-compose.yaml │ ├── integration-test.yml │ ├── networks.yml │ ├── storage-minio.yml │ └── teable/ │ ├── Dockerfile │ └── Dockerfile.db-migrate ├── dottea/ │ └── .gitignore ├── lint-staged.common.js ├── lint-staged.config.js ├── monorepo.code-workspace ├── package.json ├── packages/ │ ├── common-i18n/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── common-i18n.iml │ │ │ └── modules.xml │ │ ├── LICENSE │ │ ├── lint-staged.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── I18nNamespaces.ts │ │ │ ├── index.ts │ │ │ └── locales/ │ │ │ ├── de/ │ │ │ │ ├── auth.json │ │ │ │ ├── chart.json │ │ │ │ ├── common.json │ │ │ │ ├── dashboard.json │ │ │ │ ├── developer.json │ │ │ │ ├── oauth.json │ │ │ │ ├── plugin.json │ │ │ │ ├── sdk.json │ │ │ │ ├── setting.json │ │ │ │ ├── share.json │ │ │ │ ├── space.json │ │ │ │ ├── table.json │ │ │ │ ├── token.json │ │ │ │ └── zod.json │ │ │ ├── en/ │ │ │ │ ├── auth.json │ │ │ │ ├── chart.json │ │ │ │ ├── common.json │ │ │ │ ├── dashboard.json │ │ │ │ ├── developer.json │ │ │ │ ├── oauth.json │ │ │ │ ├── plugin.json │ │ │ │ ├── sdk.json │ │ │ │ ├── setting.json │ │ │ │ ├── share.json │ │ │ │ ├── space.json │ │ │ │ ├── table.json │ │ │ │ ├── token.json │ │ │ │ └── zod.json │ │ │ ├── es/ │ │ │ │ ├── auth.json │ │ │ │ ├── chart.json │ │ │ │ ├── common.json │ │ │ │ ├── dashboard.json │ │ │ │ ├── developer.json │ │ │ │ ├── oauth.json │ │ │ │ ├── plugin.json │ │ │ │ ├── sdk.json │ │ │ │ ├── setting.json │ │ │ │ ├── share.json │ │ │ │ ├── space.json │ │ │ │ ├── table.json │ │ │ │ ├── token.json │ │ │ │ └── zod.json │ │ │ ├── fr/ │ │ │ │ ├── auth.json │ │ │ │ ├── chart.json │ │ │ │ ├── common.json │ │ │ │ ├── developer.json │ │ │ │ ├── oauth.json │ │ │ │ ├── sdk.json │ │ │ │ ├── setting.json │ │ │ │ ├── share.json │ │ │ │ ├── space.json │ │ │ │ ├── table.json │ │ │ │ ├── token.json │ │ │ │ └── zod.json │ │ │ ├── it/ │ │ │ │ ├── auth.json │ │ │ │ ├── chart.json │ │ │ │ ├── common.json │ │ │ │ ├── dashboard.json │ │ │ │ ├── developer.json │ │ │ │ ├── oauth.json │ │ │ │ ├── plugin.json │ │ │ │ ├── sdk.json │ │ │ │ ├── setting.json │ │ │ │ ├── share.json │ │ │ │ ├── space.json │ │ │ │ ├── table.json │ │ │ │ ├── token.json │ │ │ │ └── zod.json │ │ │ ├── ja/ │ │ │ │ ├── auth.json │ │ │ │ ├── chart.json │ │ │ │ ├── common.json │ │ │ │ ├── developer.json │ │ │ │ ├── oauth.json │ │ │ │ ├── sdk.json │ │ │ │ ├── setting.json │ │ │ │ ├── share.json │ │ │ │ ├── space.json │ │ │ │ ├── table.json │ │ │ │ ├── token.json │ │ │ │ └── zod.json │ │ │ ├── ru/ │ │ │ │ ├── auth.json │ │ │ │ ├── chart.json │ │ │ │ ├── common.json │ │ │ │ ├── dashboard.json │ │ │ │ ├── developer.json │ │ │ │ ├── oauth.json │ │ │ │ ├── plugin.json │ │ │ │ ├── sdk.json │ │ │ │ ├── setting.json │ │ │ │ ├── share.json │ │ │ │ ├── space.json │ │ │ │ ├── table.json │ │ │ │ ├── token.json │ │ │ │ └── zod.json │ │ │ ├── tr/ │ │ │ │ ├── auth.json │ │ │ │ ├── chart.json │ │ │ │ ├── common.json │ │ │ │ ├── dashboard.json │ │ │ │ ├── developer.json │ │ │ │ ├── oauth.json │ │ │ │ ├── plugin.json │ │ │ │ ├── sdk.json │ │ │ │ ├── setting.json │ │ │ │ ├── share.json │ │ │ │ ├── space.json │ │ │ │ ├── table.json │ │ │ │ ├── token.json │ │ │ │ └── zod.json │ │ │ ├── uk/ │ │ │ │ ├── auth.json │ │ │ │ ├── chart.json │ │ │ │ ├── common.json │ │ │ │ ├── dashboard.json │ │ │ │ ├── developer.json │ │ │ │ ├── oauth.json │ │ │ │ ├── plugin.json │ │ │ │ ├── sdk.json │ │ │ │ ├── setting.json │ │ │ │ ├── share.json │ │ │ │ ├── space.json │ │ │ │ ├── table.json │ │ │ │ ├── token.json │ │ │ │ └── zod.json │ │ │ └── zh/ │ │ │ ├── auth.json │ │ │ ├── chart.json │ │ │ ├── common.json │ │ │ ├── dashboard.json │ │ │ ├── developer.json │ │ │ ├── oauth.json │ │ │ ├── plugin.json │ │ │ ├── sdk.json │ │ │ ├── setting.json │ │ │ ├── share.json │ │ │ ├── space.json │ │ │ ├── table.json │ │ │ ├── token.json │ │ │ └── zod.json │ │ └── tsconfig.json │ ├── core/ │ │ ├── .escheckrc │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── core.iml │ │ │ └── modules.xml │ │ ├── .size-limit.cjs │ │ ├── LICENSE │ │ ├── lint-staged.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── array/ │ │ │ │ ├── ArrayUtils.spec.ts │ │ │ │ ├── ArrayUtils.ts │ │ │ │ └── index.ts │ │ │ ├── asserts/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── asserts.test.ts │ │ │ │ ├── asserts.ts │ │ │ │ ├── index.ts │ │ │ │ └── lang.ts │ │ │ ├── auth/ │ │ │ │ ├── actions.ts │ │ │ │ ├── anonymous.ts │ │ │ │ ├── app-robot.ts │ │ │ │ ├── automation-robot.ts │ │ │ │ ├── index.ts │ │ │ │ ├── me-tag.ts │ │ │ │ ├── oauth.ts │ │ │ │ ├── permission.ts │ │ │ │ ├── role/ │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── share.ts │ │ │ │ │ ├── space.ts │ │ │ │ │ ├── table.ts │ │ │ │ │ ├── template.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── system.ts │ │ │ │ └── types.ts │ │ │ ├── convert/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── string-convert.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── nulls-to-undefined.ts │ │ │ │ └── string-convert.ts │ │ │ ├── errors/ │ │ │ │ ├── extract-error-message.ts │ │ │ │ ├── http/ │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── http-response.types.ts │ │ │ │ │ ├── http.error.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── formula/ │ │ │ │ ├── errors/ │ │ │ │ │ ├── circular-reference.error.spec.ts │ │ │ │ │ ├── circular-reference.error.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── evaluate.ts │ │ │ │ ├── function-aliases.ts │ │ │ │ ├── function-convertor.interface.ts │ │ │ │ ├── functions/ │ │ │ │ │ ├── array.spec.ts │ │ │ │ │ ├── array.ts │ │ │ │ │ ├── common.ts │ │ │ │ │ ├── date-time.spec.ts │ │ │ │ │ ├── date-time.ts │ │ │ │ │ ├── factory.ts │ │ │ │ │ ├── logical.spec.ts │ │ │ │ │ ├── logical.ts │ │ │ │ │ ├── numeric.spec.ts │ │ │ │ │ ├── numeric.ts │ │ │ │ │ ├── system.spec.ts │ │ │ │ │ ├── system.ts │ │ │ │ │ ├── text.spec.ts │ │ │ │ │ └── text.ts │ │ │ │ ├── index.ts │ │ │ │ ├── typed-value-converter.spec.ts │ │ │ │ ├── typed-value-converter.ts │ │ │ │ ├── typed-value.ts │ │ │ │ ├── visitor.spec.ts │ │ │ │ └── visitor.ts │ │ │ ├── index.ts │ │ │ ├── models/ │ │ │ │ ├── aggregation/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── statistic.spec.ts │ │ │ │ │ ├── statistic.ts │ │ │ │ │ └── statistics-func.enum.ts │ │ │ │ ├── channel.ts │ │ │ │ ├── field/ │ │ │ │ │ ├── ai-config/ │ │ │ │ │ │ ├── attachment.ts │ │ │ │ │ │ ├── date.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── multiple-select.ts │ │ │ │ │ │ ├── rating.ts │ │ │ │ │ │ ├── single-select.ts │ │ │ │ │ │ └── text.ts │ │ │ │ │ ├── button-utils.ts │ │ │ │ │ ├── cell-value-validation.ts │ │ │ │ │ ├── color-utils.spec.ts │ │ │ │ │ ├── color-utils.ts │ │ │ │ │ ├── colors.ts │ │ │ │ │ ├── conditional.constants.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── derivate/ │ │ │ │ │ │ ├── abstract/ │ │ │ │ │ │ │ ├── formula.field.abstract.ts │ │ │ │ │ │ │ ├── select-option.schema.ts │ │ │ │ │ │ │ ├── select.field.abstract.spec.ts │ │ │ │ │ │ │ ├── select.field.abstract.ts │ │ │ │ │ │ │ └── user.field.abstract.ts │ │ │ │ │ │ ├── attachment-option.schema.ts │ │ │ │ │ │ ├── attachment.field.spec.ts │ │ │ │ │ │ ├── attachment.field.ts │ │ │ │ │ │ ├── auto-number-option.schema.ts │ │ │ │ │ │ ├── auto-number.field.spec.ts │ │ │ │ │ │ ├── auto-number.field.ts │ │ │ │ │ │ ├── button-option.schema.ts │ │ │ │ │ │ ├── button.field.spec.ts │ │ │ │ │ │ ├── button.field.ts │ │ │ │ │ │ ├── checkbox-option.schema.ts │ │ │ │ │ │ ├── checkbox.field.spec.ts │ │ │ │ │ │ ├── checkbox.field.ts │ │ │ │ │ │ ├── conditional-rollup-option.schema.ts │ │ │ │ │ │ ├── conditional-rollup.field.ts │ │ │ │ │ │ ├── created-by-option.schema.ts │ │ │ │ │ │ ├── created-by.field.ts │ │ │ │ │ │ ├── created-time-option.schema.ts │ │ │ │ │ │ ├── created-time.field.spec.ts │ │ │ │ │ │ ├── created-time.field.ts │ │ │ │ │ │ ├── date-option.schema.ts │ │ │ │ │ │ ├── date.field.spec.ts │ │ │ │ │ │ ├── date.field.ts │ │ │ │ │ │ ├── formula-option.schema.ts │ │ │ │ │ │ ├── formula.field.spec.ts │ │ │ │ │ │ ├── formula.field.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── last-modified-by-option.schema.ts │ │ │ │ │ │ ├── last-modified-by.field.ts │ │ │ │ │ │ ├── last-modified-time-option.schema.ts │ │ │ │ │ │ ├── last-modified-time.field.spec.ts │ │ │ │ │ │ ├── last-modified-time.field.ts │ │ │ │ │ │ ├── link-option.schema.ts │ │ │ │ │ │ ├── link.field.spec.ts │ │ │ │ │ │ ├── link.field.ts │ │ │ │ │ │ ├── long-text-option.schema.ts │ │ │ │ │ │ ├── long-text.field.spec.ts │ │ │ │ │ │ ├── long-text.field.ts │ │ │ │ │ │ ├── multiple-select.field.spec.ts │ │ │ │ │ │ ├── multiple-select.field.ts │ │ │ │ │ │ ├── number-option.schema.ts │ │ │ │ │ │ ├── number.field.spec.ts │ │ │ │ │ │ ├── number.field.ts │ │ │ │ │ │ ├── rating-option.schema.ts │ │ │ │ │ │ ├── rating.field.spec.ts │ │ │ │ │ │ ├── rating.field.ts │ │ │ │ │ │ ├── rollup-option.schema.ts │ │ │ │ │ │ ├── rollup.field.spec.ts │ │ │ │ │ │ ├── rollup.field.ts │ │ │ │ │ │ ├── single-line-text-option.schema.ts │ │ │ │ │ │ ├── single-line-text.field.spec.ts │ │ │ │ │ │ ├── single-line-text.field.ts │ │ │ │ │ │ ├── single-select.field.spec.ts │ │ │ │ │ │ ├── single-select.field.ts │ │ │ │ │ │ ├── user-option.schema.ts │ │ │ │ │ │ ├── user.field.spec.ts │ │ │ │ │ │ └── user.field.ts │ │ │ │ │ ├── field-options-validation.spec.ts │ │ │ │ │ ├── field-unions.schema.ts │ │ │ │ │ ├── field-validation.ts │ │ │ │ │ ├── field-visitor.interface.ts │ │ │ │ │ ├── field.schema.spec.ts │ │ │ │ │ ├── field.schema.ts │ │ │ │ │ ├── field.ts │ │ │ │ │ ├── field.type.ts │ │ │ │ │ ├── field.util.spec.ts │ │ │ │ │ ├── field.util.ts │ │ │ │ │ ├── formatting/ │ │ │ │ │ │ ├── datetime.spec.ts │ │ │ │ │ │ ├── datetime.ts │ │ │ │ │ │ ├── index.spec.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── number.spec.ts │ │ │ │ │ │ ├── number.ts │ │ │ │ │ │ └── time-zone.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lookup-options-base.schema.spec.ts │ │ │ │ │ ├── lookup-options-base.schema.ts │ │ │ │ │ ├── options.schema.ts │ │ │ │ │ ├── show-as/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── number.ts │ │ │ │ │ │ └── text.ts │ │ │ │ │ ├── utils/ │ │ │ │ │ │ └── get-db-field-type.ts │ │ │ │ │ ├── zod-error.spec.ts │ │ │ │ │ └── zod-error.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ ├── notification/ │ │ │ │ │ ├── action-trigger.schema.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── notification.enum.ts │ │ │ │ │ └── notification.schema.ts │ │ │ │ ├── op.ts │ │ │ │ ├── record/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── record.ts │ │ │ │ ├── table/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── table-domain.spec.ts │ │ │ │ │ ├── table-domain.ts │ │ │ │ │ ├── table-fields.spec.ts │ │ │ │ │ ├── table-fields.ts │ │ │ │ │ ├── table.ts │ │ │ │ │ ├── tables.spec.ts │ │ │ │ │ └── tables.ts │ │ │ │ └── view/ │ │ │ │ ├── column-meta.schema.ts │ │ │ │ ├── constant.ts │ │ │ │ ├── derivate/ │ │ │ │ │ ├── calendar-view-option.schema.ts │ │ │ │ │ ├── calendar.view.ts │ │ │ │ │ ├── form-view-option.schema.ts │ │ │ │ │ ├── form.view.ts │ │ │ │ │ ├── gallery-view-option.schema.ts │ │ │ │ │ ├── gallery.view.ts │ │ │ │ │ ├── grid-view-option.schema.ts │ │ │ │ │ ├── grid.view.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── kanban-view-option.schema.ts │ │ │ │ │ ├── kanban.view.ts │ │ │ │ │ ├── plugin-view-option.schema.ts │ │ │ │ │ └── plugin.view.ts │ │ │ │ ├── filter/ │ │ │ │ │ ├── conjunction.ts │ │ │ │ │ ├── field-reference.spec.ts │ │ │ │ │ ├── field-reference.ts │ │ │ │ │ ├── filter-item.ts │ │ │ │ │ ├── filter.spec.ts │ │ │ │ │ ├── filter.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── operator.spec.ts │ │ │ │ │ └── operator.ts │ │ │ │ ├── group/ │ │ │ │ │ ├── group.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── option.schema.spec.ts │ │ │ │ ├── option.schema.ts │ │ │ │ ├── query.replace.ts │ │ │ │ ├── sort/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── sort-func.enum.ts │ │ │ │ │ ├── sort.schema.spec.ts │ │ │ │ │ └── sort.ts │ │ │ │ ├── view.schema.ts │ │ │ │ └── view.ts │ │ │ ├── op-builder/ │ │ │ │ ├── common.spec.ts │ │ │ │ ├── common.ts │ │ │ │ ├── field/ │ │ │ │ │ ├── add-column-meta.spec.ts │ │ │ │ │ ├── add-column-meta.ts │ │ │ │ │ ├── add-field.ts │ │ │ │ │ ├── delete-column-meta.spec.ts │ │ │ │ │ ├── delete-column-meta.ts │ │ │ │ │ ├── field-op-builder.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── set-field-property.spec.ts │ │ │ │ │ └── set-field-property.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ ├── op-builder.abstract.ts │ │ │ │ ├── record/ │ │ │ │ │ ├── add-record.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── record-op-builder.ts │ │ │ │ │ └── set-record.ts │ │ │ │ ├── table/ │ │ │ │ │ ├── add-table.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── set-table-property.ts │ │ │ │ │ └── table-op-builder.ts │ │ │ │ └── view/ │ │ │ │ ├── add-view.ts │ │ │ │ ├── index.ts │ │ │ │ ├── set-view-property.ts │ │ │ │ ├── update-view-column-meta.ts │ │ │ │ └── view-op-builder.ts │ │ │ ├── query/ │ │ │ │ ├── index.ts │ │ │ │ ├── json-error.strategy.ts │ │ │ │ ├── json.visitor.spec.ts │ │ │ │ ├── json.visitor.ts │ │ │ │ └── parser/ │ │ │ │ ├── Query.g4 │ │ │ │ ├── Query.interp │ │ │ │ ├── Query.tokens │ │ │ │ ├── Query.ts │ │ │ │ ├── QueryLexer.g4 │ │ │ │ ├── QueryLexer.interp │ │ │ │ ├── QueryLexer.tokens │ │ │ │ ├── QueryLexer.ts │ │ │ │ └── QueryVisitor.ts │ │ │ ├── typeguards/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── typeguards.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── json-api/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── json-api-typeguard.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── json-api-response.types.ts │ │ │ │ │ └── json-api.typeguard.ts │ │ │ │ └── typeguards.ts │ │ │ ├── types/ │ │ │ │ ├── either-or.ts │ │ │ │ ├── ensure-keys.ts │ │ │ │ ├── index.ts │ │ │ │ ├── make-optional.ts │ │ │ │ ├── make-required.ts │ │ │ │ ├── remove-null.ts │ │ │ │ ├── snapshot-query.ts │ │ │ │ └── un-promisify.ts │ │ │ ├── utils/ │ │ │ │ ├── clipboard.spec.ts │ │ │ │ ├── clipboard.ts │ │ │ │ ├── date.spec.ts │ │ │ │ ├── date.ts │ │ │ │ ├── dsn-parser.ts │ │ │ │ ├── enum.ts │ │ │ │ ├── get-random-int.spec.ts │ │ │ │ ├── get-random-int.ts │ │ │ │ ├── get-uniq-name.spec.ts │ │ │ │ ├── get-uniq-name.ts │ │ │ │ ├── id-generator.spec.ts │ │ │ │ ├── id-generator.ts │ │ │ │ ├── index.ts │ │ │ │ ├── minidenticon.ts │ │ │ │ └── replace-suffix.ts │ │ │ └── zod.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.setup.js │ ├── db-main-prisma/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── db-main-prisma.iml │ │ │ └── modules.xml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── lint-staged.config.js │ │ ├── package.json │ │ ├── prisma/ │ │ │ ├── postgres/ │ │ │ │ ├── migrations/ │ │ │ │ │ ├── 20240308114704_initial_database/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240313062534_add_credit/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240409081450_field_order/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240410190501_primary_field_visible/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240416092001_clean_useless_tables/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240528060827_add_pin_resource/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240625032002_add_admin/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240626072754_add_setting_table/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240628115120_add_space_invitation/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240702084258_add_oauth/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240708080014_oauth_revoke/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240712040045_remove_bucket/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240716070632_notification_url_path/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240806110415_add_record_history/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240814074637_update_collaborator/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240906084530_add_trash/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240913075702_add_dashboard_plugin/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240919032636_add_comment/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241008161823_share_meta/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241031080906_add_attachment_thumbnail/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241126085325_add_ref_meta/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241128112023_add_ai_config/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241205121129_add_table_trash/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241223100142_collaborator_support_org/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241226111824_remove_collaborator_foreign_user/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250115084212_add_enable_email_verification_setting/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250117105433_update_view/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250214080105_add_integration/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250217092955_add_table_plugin/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250218075500_add_plugin_context_menu/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250320062220_user_last_visit/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250328035739_brand/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250402105144_add_template/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250406145144_add_share_id_unique/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250409093339_add_task_tables/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250410102941_update_task_table/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250416113238_add_template_markdown_description/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250418091636_add_db_table_name_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250509062715_require_primary_key/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250513085306_add_ai_robot_user/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250520081803_update_user_last_visit/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250520103546_add_user_trial_used/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250526042029_repair_reference_caused_by_formula_duplicate/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250604101438_update_access_token_full_access/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250702035214_update_setting/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250730041646_add_user_permanent_deleted_time/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250804000000_add_field_meta/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250811102556_add_visit_count/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250812031017_remove_user_last_visit_useless_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250812090828_remove_visit_count/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250820022407_add_waitlist/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250820022408_add_table_meta_db_view_name/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250828083308_add_app_robot_user/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250905035737_add_trash_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250922111648_add_indexes/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250922120000_add_conditional_lookup_flag/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251028105638_add_user_lang/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251029141643_add_notification_message_i18n/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251105070802_add_oauth_foreign_keys/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251119134101_add_base_node/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251208112242_template_community/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251210134101_disallow_dashboard/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251219083654_add_template_visit_count/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260104151713_add_computed_update_outbox_tables/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260104190000_add_outbox_seed_table_id/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260105123000_add_computed_update_run_tracking/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260114000000_add_field_json_indexes/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260118000000_add_symmetric_field_id_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260118010000_add_teable_try_cast_valid/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260120065143_add_core_table_indexes/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260121090646_add_task_run_log/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260121100000_add_base_share/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260129203000_add_outbox_pending_unique_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260303000000_alter_attachment_size_to_bigint/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260305000000_add_trace_data_and_nullable_steps_edges/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260305072937_oauth_app_token_optional_secret/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260305120931_add_oauth_app_client_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ └── migration_lock.toml │ │ │ │ └── schema.prisma │ │ │ ├── seed.ts │ │ │ ├── sqlite/ │ │ │ │ ├── migrations/ │ │ │ │ │ ├── 20240308114656_initial_database/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240313061543_add_credit/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240409081445_field_order/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240416091909_clean_useless_tables/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240528055850_add_pin_resource/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240528060824_add_pin_resource/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240625031955_add_admin/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240626072703_add_setting_table/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240628115107_add_space_invitation/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240702084255_add_oauth/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240708080010_oauth_revoke/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240712040040_remove_bucket/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240716070608_notification_url_path/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240806110404_add_record_history/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240814074632_update_collaborator/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240906084521_add_trash/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240913075658_add_dashboard_plugin/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20240919032621_add_comment/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241031080903_add_attachment_thumbnail/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241126081006_add_ref_meta/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241128112016_add_ai_config/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241205121154_add_table_trash/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241223100135_collaborator_support_org/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20241226111815_remove_collaborator_foreign_user/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250115084207_add_enable_email_verification_setting/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250117105406_update_view/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250214080102_add_integration/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250217092948_add_table_plugin/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250218075455_add_plugin_context_menu/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250320062213_user_last_visit/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250328040207_brand/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250402105138_add_template/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250406145126_add_share_id_unique/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250409093334_add_task_tables/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250410102938_update_task_table/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250416113234_add_template_markdown_description/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250418091633_add_db_table_name_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250509062710_require_primary_key/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250513085303_add_ai_robot_user/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250520081750_update_user_last_visit/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250520103541_add_user_trial_used/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250526042154_repair_reference_caused_by_formula_duplicate/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250604101438_update_access_token_full_access/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250702035214_update_setting/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250730041646_add_user_permanent_deleted_time/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250804000000_add_field_meta/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250811102551_add_visit_count/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250812031012_remove_user_last_visit_useless_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250812090823_remove_visit_count/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250820022401_add_waitlist/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250828083309_add_app_robot_user/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250904034946_add_table_meta_db_view_name/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250905035730_add_trash_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250922111616_add_indexes/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20250922120000_add_conditional_lookup_flag/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251028105630_add_user_lang/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251029141619_add_notification_message_i18n/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251105070757_add_oauth_foreign_keys/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251119134053_add_base_node/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251208112242_template_community/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251210134101_disallow_dashboard/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20251219083654_add_template_visit_count/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260104151713_add_computed_update_outbox_tables/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260104190000_add_outbox_seed_table_id/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260120065143_add_core_table_indexes/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260121100000_add_base_share/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ ├── 20260129203000_add_outbox_pending_unique_index/ │ │ │ │ │ │ └── migration.sql │ │ │ │ │ └── migration_lock.toml │ │ │ │ └── schema.prisma │ │ │ └── template.prisma │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── prisma.module.ts │ │ │ ├── prisma.service.ts │ │ │ ├── seeds/ │ │ │ │ ├── e2e/ │ │ │ │ │ ├── space-seeds.ts │ │ │ │ │ └── user-seeds.ts │ │ │ │ └── seed.abstract.ts │ │ │ └── utils.ts │ │ ├── tsconfig.eslint.json │ │ └── tsconfig.json │ ├── eslint-config-bases/ │ │ ├── .eslintrc.cjs │ │ ├── .idea/ │ │ │ ├── eslint-config-bases.iml │ │ │ └── modules.xml │ │ ├── LICENSE │ │ ├── lint-staged.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── bases/ │ │ │ │ ├── index.js │ │ │ │ ├── jest.js │ │ │ │ ├── mdx.js │ │ │ │ ├── playwright.js │ │ │ │ ├── prettier-config.js │ │ │ │ ├── prettier-plugin.js │ │ │ │ ├── react-query.js │ │ │ │ ├── react.js │ │ │ │ ├── regexp.js │ │ │ │ ├── rtl.js │ │ │ │ ├── sonar.js │ │ │ │ ├── storybook.js │ │ │ │ ├── tailwind.js │ │ │ │ └── typescript.js │ │ │ ├── helpers/ │ │ │ │ ├── getDefaultIgnorePatterns.js │ │ │ │ ├── getPrettierConfig.js │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── patch/ │ │ │ │ └── modern-module-resolution.js │ │ │ └── prettier.base.config.js │ │ └── tsconfig.json │ ├── formula/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── conversion.visitor.spec.ts │ │ │ ├── conversion.visitor.ts │ │ │ ├── datetime-format-pg.spec.ts │ │ │ ├── datetime-format-pg.ts │ │ │ ├── error.listener.ts │ │ │ ├── field-reference.util.ts │ │ │ ├── field-reference.visitor.spec.ts │ │ │ ├── field-reference.visitor.ts │ │ │ ├── function-call-collector.visitor.spec.ts │ │ │ ├── function-call-collector.visitor.ts │ │ │ ├── index.ts │ │ │ ├── parse-formula.ts │ │ │ └── parser/ │ │ │ ├── Formula.g4 │ │ │ ├── Formula.interp │ │ │ ├── Formula.tokens │ │ │ ├── Formula.ts │ │ │ ├── FormulaLexer.g4 │ │ │ ├── FormulaLexer.interp │ │ │ ├── FormulaLexer.tokens │ │ │ ├── FormulaLexer.ts │ │ │ ├── FormulaVisitor.ts │ │ │ └── README.md │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ ├── vitest.config.ts │ │ └── vitest.setup.js │ ├── i18n-keys/ │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── icons/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── icons.iml │ │ │ └── modules.xml │ │ ├── LICENSE │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── generate.mjs │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── A.tsx │ │ │ │ ├── ActionAI.tsx │ │ │ │ ├── ActionCreateRecord.tsx │ │ │ │ ├── ActionGetRecord.tsx │ │ │ │ ├── ActionHttpRequest.tsx │ │ │ │ ├── ActionScript.tsx │ │ │ │ ├── ActionSendEmail.tsx │ │ │ │ ├── ActionUpdateRecord.tsx │ │ │ │ ├── Admin.tsx │ │ │ │ ├── AlertCircle.tsx │ │ │ │ ├── AlertTriangle.tsx │ │ │ │ ├── AmazonBedrock.tsx │ │ │ │ ├── Anthropic.tsx │ │ │ │ ├── AppBuilder.tsx │ │ │ │ ├── AppV0.tsx │ │ │ │ ├── Apple.tsx │ │ │ │ ├── ArceeAi.tsx │ │ │ │ ├── Array.tsx │ │ │ │ ├── ArrowDown.tsx │ │ │ │ ├── ArrowLeft.tsx │ │ │ │ ├── ArrowRight.tsx │ │ │ │ ├── ArrowUp.tsx │ │ │ │ ├── ArrowUpDown.tsx │ │ │ │ ├── ArrowUpRight.tsx │ │ │ │ ├── Audio.tsx │ │ │ │ ├── Azure.tsx │ │ │ │ ├── BarChart2.tsx │ │ │ │ ├── Bell.tsx │ │ │ │ ├── Bfl.tsx │ │ │ │ ├── Boolean.tsx │ │ │ │ ├── Box.tsx │ │ │ │ ├── Building2.tsx │ │ │ │ ├── Bytedance.tsx │ │ │ │ ├── Calendar.tsx │ │ │ │ ├── Check.tsx │ │ │ │ ├── CheckCircle2.tsx │ │ │ │ ├── CheckSquare.tsx │ │ │ │ ├── Checked.tsx │ │ │ │ ├── ChevronDown.tsx │ │ │ │ ├── ChevronLeft.tsx │ │ │ │ ├── ChevronRight.tsx │ │ │ │ ├── ChevronUp.tsx │ │ │ │ ├── ChevronsLeft.tsx │ │ │ │ ├── ChevronsRight.tsx │ │ │ │ ├── ChevronsUpDown.tsx │ │ │ │ ├── Circle.tsx │ │ │ │ ├── ClipboardList.tsx │ │ │ │ ├── Clock4.tsx │ │ │ │ ├── Code.tsx │ │ │ │ ├── Code2.tsx │ │ │ │ ├── CodeReact.tsx │ │ │ │ ├── Cohere.tsx │ │ │ │ ├── Coins.tsx │ │ │ │ ├── Component.tsx │ │ │ │ ├── Compose.tsx │ │ │ │ ├── Condition.tsx │ │ │ │ ├── ConditionalLookup.tsx │ │ │ │ ├── ConditionalRollup.tsx │ │ │ │ ├── Copy.tsx │ │ │ │ ├── CreditCard.tsx │ │ │ │ ├── Credits.tsx │ │ │ │ ├── Cuppy.tsx │ │ │ │ ├── CuppyLoader.tsx │ │ │ │ ├── Database.tsx │ │ │ │ ├── DeepThinking.tsx │ │ │ │ ├── Deepseek.tsx │ │ │ │ ├── Discord.tsx │ │ │ │ ├── DivideCircle.tsx │ │ │ │ ├── DivideSquare.tsx │ │ │ │ ├── DollarSign.tsx │ │ │ │ ├── Download.tsx │ │ │ │ ├── DraggableHandle.tsx │ │ │ │ ├── Edit.tsx │ │ │ │ ├── Expand.tsx │ │ │ │ ├── ExpandAll.tsx │ │ │ │ ├── Export.tsx │ │ │ │ ├── Eye.tsx │ │ │ │ ├── EyeOff.tsx │ │ │ │ ├── File.tsx │ │ │ │ ├── FileAudio.tsx │ │ │ │ ├── FileAudioDark.tsx │ │ │ │ ├── FileCsv.tsx │ │ │ │ ├── FileDocument.tsx │ │ │ │ ├── FileDocumentDark.tsx │ │ │ │ ├── FileExcel.tsx │ │ │ │ ├── FileFont.tsx │ │ │ │ ├── FileImage.tsx │ │ │ │ ├── FileJson.tsx │ │ │ │ ├── FilePack.tsx │ │ │ │ ├── FilePackDark.tsx │ │ │ │ ├── FilePdf.tsx │ │ │ │ ├── FilePdfDark.tsx │ │ │ │ ├── FilePresentation.tsx │ │ │ │ ├── FilePresentationDark.tsx │ │ │ │ ├── FileQuestion.tsx │ │ │ │ ├── FileScript.tsx │ │ │ │ ├── FileSpreadsheet.tsx │ │ │ │ ├── FileSpreadsheetDark.tsx │ │ │ │ ├── FileText.tsx │ │ │ │ ├── FileUnknown.tsx │ │ │ │ ├── FileUnknownDark.tsx │ │ │ │ ├── FileVideo.tsx │ │ │ │ ├── FileVideoDark.tsx │ │ │ │ ├── Filter.tsx │ │ │ │ ├── Flame.tsx │ │ │ │ ├── FreezeColumn.tsx │ │ │ │ ├── Frown.tsx │ │ │ │ ├── Gauge.tsx │ │ │ │ ├── GiftPerson.tsx │ │ │ │ ├── GiftPersonDark.tsx │ │ │ │ ├── Github.tsx │ │ │ │ ├── GithubLogo.tsx │ │ │ │ ├── Globe.tsx │ │ │ │ ├── GoogleLogo.tsx │ │ │ │ ├── Hash.tsx │ │ │ │ ├── Heart.tsx │ │ │ │ ├── HelpCircle.tsx │ │ │ │ ├── History.tsx │ │ │ │ ├── Home.tsx │ │ │ │ ├── Image.tsx │ │ │ │ ├── ImageGeneration.tsx │ │ │ │ ├── Import.tsx │ │ │ │ ├── InIcon.tsx │ │ │ │ ├── Inbox.tsx │ │ │ │ ├── Inception.tsx │ │ │ │ ├── Integration.tsx │ │ │ │ ├── Kanban.tsx │ │ │ │ ├── Key.tsx │ │ │ │ ├── Kwaipilot.tsx │ │ │ │ ├── Layers.tsx │ │ │ │ ├── LayoutGrid.tsx │ │ │ │ ├── LayoutList.tsx │ │ │ │ ├── LayoutTemplate.tsx │ │ │ │ ├── License.tsx │ │ │ │ ├── Line1.tsx │ │ │ │ ├── Line2.tsx │ │ │ │ ├── Line3.tsx │ │ │ │ ├── Lingyiwanwu.tsx │ │ │ │ ├── Link.tsx │ │ │ │ ├── LinkedIn.tsx │ │ │ │ ├── ListChecks.tsx │ │ │ │ ├── ListOrdered.tsx │ │ │ │ ├── ListPlus.tsx │ │ │ │ ├── Loader2.tsx │ │ │ │ ├── Lock.tsx │ │ │ │ ├── LongText.tsx │ │ │ │ ├── MagicAi.tsx │ │ │ │ ├── Mail.tsx │ │ │ │ ├── MarkUnread.tsx │ │ │ │ ├── Maximize2.tsx │ │ │ │ ├── Meituan.tsx │ │ │ │ ├── Menu.tsx │ │ │ │ ├── MessageSquare.tsx │ │ │ │ ├── MessageSquareDot.tsx │ │ │ │ ├── Meta.tsx │ │ │ │ ├── MicrosoftTeams.tsx │ │ │ │ ├── Minimax.tsx │ │ │ │ ├── Minimize2.tsx │ │ │ │ ├── Mistral.tsx │ │ │ │ ├── Moon.tsx │ │ │ │ ├── Moonshot.tsx │ │ │ │ ├── MoreHorizontal.tsx │ │ │ │ ├── Morph.tsx │ │ │ │ ├── MousePointerClick.tsx │ │ │ │ ├── Network.tsx │ │ │ │ ├── Nvidia.tsx │ │ │ │ ├── Object.tsx │ │ │ │ ├── Ollama.tsx │ │ │ │ ├── OpenRouter.tsx │ │ │ │ ├── Openai.tsx │ │ │ │ ├── PackageCheck.tsx │ │ │ │ ├── PaintBucket.tsx │ │ │ │ ├── Paperclip.tsx │ │ │ │ ├── Pencil.tsx │ │ │ │ ├── Percent.tsx │ │ │ │ ├── Perplexity.tsx │ │ │ │ ├── Phone.tsx │ │ │ │ ├── Play.tsx │ │ │ │ ├── Plus.tsx │ │ │ │ ├── PlusCircle.tsx │ │ │ │ ├── PrimeIntellect.tsx │ │ │ │ ├── Puzzle.tsx │ │ │ │ ├── Qrcode.tsx │ │ │ │ ├── Qwen.tsx │ │ │ │ ├── Redo2.tsx │ │ │ │ ├── RefreshCcw.tsx │ │ │ │ ├── RotateCw.tsx │ │ │ │ ├── RowExtralTall.tsx │ │ │ │ ├── RowMedium.tsx │ │ │ │ ├── RowShort.tsx │ │ │ │ ├── RowTall.tsx │ │ │ │ ├── Search.tsx │ │ │ │ ├── Server.tsx │ │ │ │ ├── Settings.tsx │ │ │ │ ├── Share2.tsx │ │ │ │ ├── Sheet.tsx │ │ │ │ ├── ShieldCheck.tsx │ │ │ │ ├── ShieldUser.tsx │ │ │ │ ├── Sidebar.tsx │ │ │ │ ├── Slack.tsx │ │ │ │ ├── SortAsc.tsx │ │ │ │ ├── Square.tsx │ │ │ │ ├── Star.tsx │ │ │ │ ├── Stealth.tsx │ │ │ │ ├── StretchHorizontal.tsx │ │ │ │ ├── Sun.tsx │ │ │ │ ├── SunMedium.tsx │ │ │ │ ├── Switch.tsx │ │ │ │ ├── Table2.tsx │ │ │ │ ├── Teable.tsx │ │ │ │ ├── TeableAi.tsx │ │ │ │ ├── TeableNew.tsx │ │ │ │ ├── ThumbsUp.tsx │ │ │ │ ├── Token.tsx │ │ │ │ ├── Translation.tsx │ │ │ │ ├── Trash.tsx │ │ │ │ ├── Trash2.tsx │ │ │ │ ├── TriggerButton.tsx │ │ │ │ ├── TriggerCreateOrUpdate.tsx │ │ │ │ ├── TriggerCreateRecord.tsx │ │ │ │ ├── TriggerEmailReceived.tsx │ │ │ │ ├── TriggerForm.tsx │ │ │ │ ├── TriggerRecordMatchesConditions.tsx │ │ │ │ ├── TriggerSchedule.tsx │ │ │ │ ├── TriggerUpdateRecord.tsx │ │ │ │ ├── TriggerWebhook.tsx │ │ │ │ ├── Twitter.tsx │ │ │ │ ├── Undo2.tsx │ │ │ │ ├── User.tsx │ │ │ │ ├── UserEdit.tsx │ │ │ │ ├── UserPlus.tsx │ │ │ │ ├── Users.tsx │ │ │ │ ├── Vercel.tsx │ │ │ │ ├── Video.tsx │ │ │ │ ├── Voyage.tsx │ │ │ │ ├── Webhook.tsx │ │ │ │ ├── WorkflowLogic.tsx │ │ │ │ ├── Wrench.tsx │ │ │ │ ├── X.tsx │ │ │ │ ├── Xai.tsx │ │ │ │ ├── Xiaomi.tsx │ │ │ │ ├── Zap.tsx │ │ │ │ ├── Zapier.tsx │ │ │ │ ├── Zhipu.tsx │ │ │ │ ├── ZoomIn.tsx │ │ │ │ └── ZoomOut.tsx │ │ │ └── index.ts │ │ ├── tsconfig.eslint.json │ │ └── tsconfig.json │ ├── openapi/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── modules.xml │ │ │ └── openapi.iml │ │ ├── LICENSE │ │ ├── lint-staged.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── access-token/ │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── list.ts │ │ │ │ ├── refresh.ts │ │ │ │ ├── types.ts │ │ │ │ └── update.ts │ │ │ ├── admin/ │ │ │ │ ├── enterprise-license/ │ │ │ │ │ ├── get-status.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── plugin/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── publish.ts │ │ │ │ │ └── unpublish.ts │ │ │ │ └── setting/ │ │ │ │ ├── ai-key-stats.ts │ │ │ │ ├── batch-test-llm.ts │ │ │ │ ├── get-public.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── key.enum.ts │ │ │ │ ├── pricing.spec.ts │ │ │ │ ├── set-transport-config.ts │ │ │ │ ├── test-api-key.ts │ │ │ │ ├── test-llm.ts │ │ │ │ ├── test-public-access.ts │ │ │ │ ├── update.ts │ │ │ │ └── upload-logo.ts │ │ │ ├── aggregation/ │ │ │ │ ├── get-aggregation.ts │ │ │ │ ├── get-calendar-daily-collection.ts │ │ │ │ ├── get-group-points.ts │ │ │ │ ├── get-record-index.ts │ │ │ │ ├── get-row-count.ts │ │ │ │ ├── get-search-by-index.ts │ │ │ │ ├── get-search-count.ts │ │ │ │ ├── get-task-status-collection.ts │ │ │ │ ├── index.ts │ │ │ │ └── type.ts │ │ │ ├── ai/ │ │ │ │ ├── generate-stream.ts │ │ │ │ ├── get-ai-disable-actions.ts │ │ │ │ ├── get-config.ts │ │ │ │ ├── image-model-config.ts │ │ │ │ └── index.ts │ │ │ ├── attachment/ │ │ │ │ ├── index.ts │ │ │ │ ├── notify.ts │ │ │ │ ├── read-file.ts │ │ │ │ ├── signature.ts │ │ │ │ ├── upload-file.ts │ │ │ │ └── utils.ts │ │ │ ├── auth/ │ │ │ │ ├── add-password.ts │ │ │ │ ├── change-email.ts │ │ │ │ ├── change-password.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reset-password.ts │ │ │ │ ├── send-change-email-code.ts │ │ │ │ ├── send-reset-password-email.ts │ │ │ │ ├── send-signup-verification-code.ts │ │ │ │ ├── signin.ts │ │ │ │ ├── signout.ts │ │ │ │ ├── signup.ts │ │ │ │ ├── temp-token.ts │ │ │ │ ├── types.ts │ │ │ │ ├── user-me.ts │ │ │ │ ├── user.ts │ │ │ │ └── waitlist/ │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── invite-code.ts │ │ │ │ ├── invite.ts │ │ │ │ └── join.ts │ │ │ ├── automation/ │ │ │ │ ├── index.ts │ │ │ │ └── workflow/ │ │ │ │ └── create.ts │ │ │ ├── axios.ts │ │ │ ├── base/ │ │ │ │ ├── all-list.ts │ │ │ │ ├── collaborator-add.ts │ │ │ │ ├── collaborator-delete.ts │ │ │ │ ├── collaborator-get-list-user.ts │ │ │ │ ├── collaborator-get-list.ts │ │ │ │ ├── collaborator-update.ts │ │ │ │ ├── create-from-template.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── duplicate.ts │ │ │ │ ├── erd.ts │ │ │ │ ├── export.ts │ │ │ │ ├── get-permission.ts │ │ │ │ ├── get-shared-base.ts │ │ │ │ ├── get.ts │ │ │ │ ├── import.spec.ts │ │ │ │ ├── import.ts │ │ │ │ ├── index.ts │ │ │ │ ├── invitation-create-link.ts │ │ │ │ ├── invitation-delete-link.ts │ │ │ │ ├── invitation-email.ts │ │ │ │ ├── invitation-get-link-list.ts │ │ │ │ ├── invitation-update-link.ts │ │ │ │ ├── move.ts │ │ │ │ ├── permanent-delete.ts │ │ │ │ ├── publish.ts │ │ │ │ ├── query-data/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── route.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── update-order.ts │ │ │ │ └── update.ts │ │ │ ├── base-node/ │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── duplicate.ts │ │ │ │ ├── folder/ │ │ │ │ │ ├── create.ts │ │ │ │ │ ├── delete.ts │ │ │ │ │ └── update.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get-tree.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── move.ts │ │ │ │ ├── permanent-delete.ts │ │ │ │ ├── types.ts │ │ │ │ └── update.ts │ │ │ ├── base-share/ │ │ │ │ ├── auth.ts │ │ │ │ ├── copy.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── list.ts │ │ │ │ ├── refresh.ts │ │ │ │ ├── types.ts │ │ │ │ └── update.ts │ │ │ ├── billing/ │ │ │ │ ├── index.ts │ │ │ │ └── subscription/ │ │ │ │ ├── get-subscription-summary-list.ts │ │ │ │ ├── get-subscription-summary.ts │ │ │ │ └── index.ts │ │ │ ├── comment/ │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── get-attachment-url.ts │ │ │ │ ├── get-count.ts │ │ │ │ ├── get-counts-by-query.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reaction/ │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── create-reaction.ts │ │ │ │ │ ├── delete-reaction.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── subscribe/ │ │ │ │ │ ├── create-subscribe.ts │ │ │ │ │ ├── delete-subscribe.ts │ │ │ │ │ ├── get-subscribe.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── update.ts │ │ │ ├── dashboard/ │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── duplicate-installed.ts │ │ │ │ ├── duplicate.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── plugin-get.ts │ │ │ │ ├── plugin-install.ts │ │ │ │ ├── plugin-remove.ts │ │ │ │ ├── plugin-rename.ts │ │ │ │ ├── plugin-update-storage.ts │ │ │ │ ├── rename.ts │ │ │ │ ├── types.ts │ │ │ │ └── update-layout.ts │ │ │ ├── db-connection/ │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── get.ts │ │ │ │ └── index.ts │ │ │ ├── export/ │ │ │ │ ├── export-csv.ts │ │ │ │ └── index.ts │ │ │ ├── field/ │ │ │ │ ├── auto-fill-field.ts │ │ │ │ ├── convert.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete-list.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── duplicate.ts │ │ │ │ ├── filter-link-records.ts │ │ │ │ ├── get-delete-references.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── stop-fill-field.ts │ │ │ │ └── update.ts │ │ │ ├── formula/ │ │ │ │ ├── ai.ts │ │ │ │ ├── func-define.ts │ │ │ │ └── index.ts │ │ │ ├── generate.schema.ts │ │ │ ├── import/ │ │ │ │ ├── analyze.ts │ │ │ │ ├── constant.ts │ │ │ │ ├── import-status.ts │ │ │ │ ├── import-table.ts │ │ │ │ ├── index.ts │ │ │ │ ├── inplace-import-table.ts │ │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── integrity/ │ │ │ │ ├── index.ts │ │ │ │ ├── link-check.ts │ │ │ │ └── link-fix.ts │ │ │ ├── invitation/ │ │ │ │ ├── accept.ts │ │ │ │ └── index.ts │ │ │ ├── mail/ │ │ │ │ ├── index.ts │ │ │ │ ├── test.ts │ │ │ │ └── types.ts │ │ │ ├── notification/ │ │ │ │ ├── get-list.ts │ │ │ │ ├── index.ts │ │ │ │ ├── read-all.ts │ │ │ │ ├── unread-count.ts │ │ │ │ └── update-status.ts │ │ │ ├── oauth/ │ │ │ │ ├── authorized-list.ts │ │ │ │ ├── create.ts │ │ │ │ ├── decision-info.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── revoke-token.ts │ │ │ │ ├── revoke.ts │ │ │ │ ├── secret-delete.ts │ │ │ │ ├── secret-generate.ts │ │ │ │ └── update.ts │ │ │ ├── openapi-snippet/ │ │ │ │ ├── index.js │ │ │ │ └── openapi-to-har.js │ │ │ ├── organization/ │ │ │ │ ├── departments.ts │ │ │ │ ├── get-me.ts │ │ │ │ ├── index.ts │ │ │ │ └── user-get.ts │ │ │ ├── pin/ │ │ │ │ ├── add.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── update-order.ts │ │ │ ├── plan/ │ │ │ │ ├── index.ts │ │ │ │ ├── plan-convert.ts │ │ │ │ ├── plan-create.ts │ │ │ │ ├── plan-delete.ts │ │ │ │ └── plan.ts │ │ │ ├── plugin/ │ │ │ │ ├── chart/ │ │ │ │ │ ├── dashboard-query.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── plugin-panel-query.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── get-auth-code.ts │ │ │ │ ├── get-center-list.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get-token.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── refresh-token.ts │ │ │ │ ├── regenerate-secret.ts │ │ │ │ ├── submit.ts │ │ │ │ ├── types.ts │ │ │ │ ├── unpublish.ts │ │ │ │ └── update.ts │ │ │ ├── plugin-context-menu/ │ │ │ │ ├── index.ts │ │ │ │ ├── plugin-get-list.ts │ │ │ │ ├── plugin-get-storage.ts │ │ │ │ ├── plugin-get.ts │ │ │ │ ├── plugin-install.ts │ │ │ │ ├── plugin-move.ts │ │ │ │ ├── plugin-remove.ts │ │ │ │ ├── plugin-rename.ts │ │ │ │ └── plugin-update-storage.ts │ │ │ ├── plugin-panel/ │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── duplicate-panel-installed.ts │ │ │ │ ├── duplicate.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── list.ts │ │ │ │ ├── plugin-get.ts │ │ │ │ ├── plugin-install.ts │ │ │ │ ├── plugin-remove.ts │ │ │ │ ├── plugin-rename.ts │ │ │ │ ├── plugin-update-storage.ts │ │ │ │ ├── rename.ts │ │ │ │ └── update-layout.ts │ │ │ ├── query/ │ │ │ │ ├── index.ts │ │ │ │ └── save-query-params.ts │ │ │ ├── record/ │ │ │ │ ├── README.ts │ │ │ │ ├── auto-fill-cell.ts │ │ │ │ ├── button-click.ts │ │ │ │ ├── button-reset.ts │ │ │ │ ├── constant.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete-list.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── duplicate.ts │ │ │ │ ├── form-submit.ts │ │ │ │ ├── get-collaborators.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get-record-history.ts │ │ │ │ ├── get-record-list-history.ts │ │ │ │ ├── get-record-status.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── insert-attachment.ts │ │ │ │ ├── record.schema.spec.ts │ │ │ │ ├── update-records.ts │ │ │ │ ├── update.ts │ │ │ │ └── upload-attachment.ts │ │ │ ├── selection/ │ │ │ │ ├── clear.ts │ │ │ │ ├── copy.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── index.ts │ │ │ │ ├── paste.ts │ │ │ │ ├── range.ts │ │ │ │ └── temporary-paste.ts │ │ │ ├── share/ │ │ │ │ ├── index.ts │ │ │ │ ├── view-aggregations.ts │ │ │ │ ├── view-auth.ts │ │ │ │ ├── view-button-click.ts │ │ │ │ ├── view-calendar-daily-collection.ts │ │ │ │ ├── view-collaborators.ts │ │ │ │ ├── view-copy.ts │ │ │ │ ├── view-form-submit.ts │ │ │ │ ├── view-get.ts │ │ │ │ ├── view-group-points.ts │ │ │ │ ├── view-link-records.ts │ │ │ │ ├── view-records.ts │ │ │ │ ├── view-row-count.ts │ │ │ │ ├── view-search-count.ts │ │ │ │ └── view-search-index.ts │ │ │ ├── space/ │ │ │ │ ├── collaborator-add.ts │ │ │ │ ├── collaborator-delete.ts │ │ │ │ ├── collaborator-get-list.ts │ │ │ │ ├── collaborator-update.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── get-base-list.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── integration-create.ts │ │ │ │ ├── integration-delete.ts │ │ │ │ ├── integration-get-list.ts │ │ │ │ ├── integration-update.ts │ │ │ │ ├── invitation-create-link.ts │ │ │ │ ├── invitation-delete-link.ts │ │ │ │ ├── invitation-email.ts │ │ │ │ ├── invitation-get-link-list.ts │ │ │ │ ├── invitation-update-link.ts │ │ │ │ ├── permanent-delete.ts │ │ │ │ ├── search.ts │ │ │ │ ├── test-llm-integration.ts │ │ │ │ ├── types.ts │ │ │ │ └── update.ts │ │ │ ├── table/ │ │ │ │ ├── create.ts │ │ │ │ ├── default-view-id.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── duplicate.ts │ │ │ │ ├── get-abnormal-index.ts │ │ │ │ ├── get-activated-index.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get-permission.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── permanent-delete.ts │ │ │ │ ├── repair-table-index.ts │ │ │ │ ├── toggle-table-index.ts │ │ │ │ ├── update-db-table-name.ts │ │ │ │ ├── update-description.ts │ │ │ │ ├── update-icon.ts │ │ │ │ ├── update-name.ts │ │ │ │ └── update-order.ts │ │ │ ├── template/ │ │ │ │ ├── category/ │ │ │ │ │ ├── create.ts │ │ │ │ │ ├── delete.ts │ │ │ │ │ ├── get.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── update-order.ts │ │ │ │ │ └── update.ts │ │ │ │ ├── create-snapshot.ts │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── get-by-base-id.ts │ │ │ │ ├── get-permalink.ts │ │ │ │ ├── get-published.ts │ │ │ │ ├── get-template-detail.ts │ │ │ │ ├── get.ts │ │ │ │ ├── increment-visit.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pin-top.ts │ │ │ │ ├── unpublish.ts │ │ │ │ ├── update-order.ts │ │ │ │ └── update.ts │ │ │ ├── trash/ │ │ │ │ ├── delete.ts │ │ │ │ ├── get-items.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reset-items.ts │ │ │ │ ├── restore.ts │ │ │ │ └── types.ts │ │ │ ├── types.ts │ │ │ ├── undo-redo/ │ │ │ │ ├── index.ts │ │ │ │ ├── redo.ts │ │ │ │ └── undo.ts │ │ │ ├── unsubscribe/ │ │ │ │ ├── export-list.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get.ts │ │ │ │ ├── import-list.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── update.ts │ │ │ ├── usage/ │ │ │ │ ├── get-base-usage.ts │ │ │ │ ├── get-instance-usage.ts │ │ │ │ ├── get-space-usage.ts │ │ │ │ └── index.ts │ │ │ ├── user/ │ │ │ │ ├── index.ts │ │ │ │ ├── last-visit/ │ │ │ │ │ ├── get-base-node.ts │ │ │ │ │ ├── get.ts │ │ │ │ │ ├── getMap.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── list-base.ts │ │ │ │ │ └── update.ts │ │ │ │ ├── update-avatar.ts │ │ │ │ ├── update-lang.ts │ │ │ │ ├── update-name.ts │ │ │ │ └── update-notify-meta.ts │ │ │ ├── user-integration/ │ │ │ │ ├── delete.ts │ │ │ │ ├── index.ts │ │ │ │ ├── list.ts │ │ │ │ ├── types.ts │ │ │ │ └── update-name.ts │ │ │ ├── utils.ts │ │ │ ├── view/ │ │ │ │ ├── create.ts │ │ │ │ ├── delete.ts │ │ │ │ ├── duplicate.ts │ │ │ │ ├── filter-link-records.ts │ │ │ │ ├── get-list.ts │ │ │ │ ├── get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── manual-sort.ts │ │ │ │ ├── plugin-get.ts │ │ │ │ ├── plugin-install.ts │ │ │ │ ├── plugin-update-storage.ts │ │ │ │ ├── refresh-share-id.ts │ │ │ │ ├── share-disable.ts │ │ │ │ ├── share-enable.ts │ │ │ │ ├── update-description.ts │ │ │ │ ├── update-fields-column-meta.ts │ │ │ │ ├── update-filter.ts │ │ │ │ ├── update-group.ts │ │ │ │ ├── update-locked.ts │ │ │ │ ├── update-name.ts │ │ │ │ ├── update-options.ts │ │ │ │ ├── update-order.ts │ │ │ │ ├── update-record-order.ts │ │ │ │ ├── update-share-meta.ts │ │ │ │ └── update-sort.ts │ │ │ └── zod.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.setup.js │ ├── sdk/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── modules.xml │ │ │ └── sdk.iml │ │ ├── LICENSE │ │ ├── components.json │ │ ├── config/ │ │ │ └── tests/ │ │ │ └── setupVitest.ts │ │ ├── lint-staged.config.js │ │ ├── package.json │ │ ├── plate-components.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── FileZone.tsx │ │ │ │ ├── ReadOnlyTip.tsx │ │ │ │ ├── base-query/ │ │ │ │ │ ├── FormItem.tsx │ │ │ │ │ ├── QueryBuilder.tsx │ │ │ │ │ ├── QueryEditor.tsx │ │ │ │ │ ├── QueryEditorContainer.tsx │ │ │ │ │ ├── QueryFom.tsx │ │ │ │ │ ├── QueryOperators.tsx │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── ContextColumnCommand.tsx │ │ │ │ │ │ ├── ContextColumnSelector.tsx │ │ │ │ │ │ ├── NewPopover.tsx │ │ │ │ │ │ └── useAllColumns.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ ├── QueryEditorContext.tsx │ │ │ │ │ │ ├── QueryEditorProvider.tsx │ │ │ │ │ │ ├── QueryFormContext.tsx │ │ │ │ │ │ └── QueryFormProvider.tsx │ │ │ │ │ ├── editors/ │ │ │ │ │ │ ├── QueryAggregation.tsx │ │ │ │ │ │ ├── QueryFilter/ │ │ │ │ │ │ │ ├── FieldComponent.tsx │ │ │ │ │ │ │ ├── OperatorComponent.tsx │ │ │ │ │ │ │ ├── QueryFilter.tsx │ │ │ │ │ │ │ ├── ValueComponent.tsx │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── QueryGroup.tsx │ │ │ │ │ │ ├── QueryJoin.tsx │ │ │ │ │ │ ├── QueryOrder.tsx │ │ │ │ │ │ ├── QuerySelect.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── query-from/ │ │ │ │ │ │ ├── QueryFrom.tsx │ │ │ │ │ │ ├── QueryFromValue.tsx │ │ │ │ │ │ └── useQueryFromTableValidation.ts │ │ │ │ │ ├── useQueryContext.ts │ │ │ │ │ └── useQueryOperatorsStatic.ts │ │ │ │ ├── billing/ │ │ │ │ │ └── store/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── usage-limit-modal.ts │ │ │ │ ├── cell-value/ │ │ │ │ │ ├── CellValue.tsx │ │ │ │ │ ├── cell-attachment/ │ │ │ │ │ │ ├── CellAttachment.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-button/ │ │ │ │ │ │ ├── CellButton.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-checkbox/ │ │ │ │ │ │ ├── CellCheckbox.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-date/ │ │ │ │ │ │ ├── CellDate.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-link/ │ │ │ │ │ │ ├── CellLink.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-markdown/ │ │ │ │ │ │ ├── CellMarkdown.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-number/ │ │ │ │ │ │ ├── CellNumber.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-rating/ │ │ │ │ │ │ ├── CellRating.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-select/ │ │ │ │ │ │ ├── CellSelect.tsx │ │ │ │ │ │ ├── SelectTag.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-text/ │ │ │ │ │ │ ├── CellText.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── cell-user/ │ │ │ │ │ │ ├── CellUser.tsx │ │ │ │ │ │ ├── UserAvatar.tsx │ │ │ │ │ │ ├── UserTag.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── OverflowTooltip.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── useTagVisibility.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── cell-value-editor/ │ │ │ │ │ ├── CellEditor.tsx │ │ │ │ │ ├── CellEditorMain.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── collaborator/ │ │ │ │ │ ├── CollaboratorWithHoverCard.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── color/ │ │ │ │ │ ├── Color.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── comment/ │ │ │ │ │ ├── CommentHeader.tsx │ │ │ │ │ ├── CommentPanel.tsx │ │ │ │ │ ├── comment-editor/ │ │ │ │ │ │ ├── CommentEditor.tsx │ │ │ │ │ │ ├── CommentQuote.tsx │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── transform.tsx │ │ │ │ │ ├── comment-list/ │ │ │ │ │ │ ├── CommentContent.tsx │ │ │ │ │ │ ├── CommentItem.tsx │ │ │ │ │ │ ├── CommentList.tsx │ │ │ │ │ │ ├── CommentSkeleton.tsx │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── node/ │ │ │ │ │ │ │ ├── block-element/ │ │ │ │ │ │ │ │ ├── Image.tsx │ │ │ │ │ │ │ │ ├── Paragraph.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── inline-element/ │ │ │ │ │ │ │ │ ├── Link.tsx │ │ │ │ │ │ │ │ ├── MentionUser.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ └── type.ts │ │ │ │ │ │ ├── reaction/ │ │ │ │ │ │ │ ├── Reaction.tsx │ │ │ │ │ │ │ ├── ReactionPicker.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── useCommentPatchListener.ts │ │ │ │ │ │ └── useIsMe.ts │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── useBaseId.ts │ │ │ │ │ │ ├── useRecordCommentCount.ts │ │ │ │ │ │ └── useRecordId.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── useCommentStore.ts │ │ │ │ ├── create-record/ │ │ │ │ │ ├── CreateRecordModal.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── editor/ │ │ │ │ │ ├── attachment/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ ├── EditorMain.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── upload-attachment/ │ │ │ │ │ │ │ ├── AttachmentItem.tsx │ │ │ │ │ │ │ ├── FileInput.tsx │ │ │ │ │ │ │ ├── UploadAttachment.tsx │ │ │ │ │ │ │ ├── UploadAttachmentView.tsx │ │ │ │ │ │ │ ├── UploadingFile.tsx │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── useCellAttachmentUpload.ts │ │ │ │ │ │ │ │ ├── useLocalAttachmentUpload.ts │ │ │ │ │ │ │ │ ├── usePendingAttachmentUpload.spec.tsx │ │ │ │ │ │ │ │ └── usePendingAttachmentUpload.ts │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ └── uploadManage.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── button/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── checkbox/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── date/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ ├── EditorMain.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── formula/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AiPromptContainer.tsx │ │ │ │ │ │ │ ├── CodeEditor.tsx │ │ │ │ │ │ │ ├── FunctionGuide.tsx │ │ │ │ │ │ │ ├── FunctionHelper.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── extensions/ │ │ │ │ │ │ │ ├── autocomplete.ts │ │ │ │ │ │ │ ├── history.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── theme.ts │ │ │ │ │ │ │ ├── token.ts │ │ │ │ │ │ │ └── variable.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── interface.ts │ │ │ │ │ │ └── visitor.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── link/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ ├── EditorMain.tsx │ │ │ │ │ │ ├── LinkCard.tsx │ │ │ │ │ │ ├── LinkList.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── interface.ts │ │ │ │ │ ├── long-text/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ ├── ExpandLongTextEditor.tsx │ │ │ │ │ │ ├── ExpandMarkdownEditor.tsx │ │ │ │ │ │ ├── MarkdownEditor.tsx │ │ │ │ │ │ ├── MarkdownReadonly.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── milkdown-exit-code-plugin.ts │ │ │ │ │ │ ├── milkdown-factory.ts │ │ │ │ │ │ ├── milkdown-link-click-plugin.ts │ │ │ │ │ │ ├── milkdown-no-image-plugin.ts │ │ │ │ │ │ ├── milkdown-selection-toolbar-plugin.ts │ │ │ │ │ │ ├── milkdown-toolbar-plugin.ts │ │ │ │ │ │ ├── milkdown.css │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── number/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── rating/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── select/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ ├── EditorMain.tsx │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── OptionList.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── text/ │ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── type.ts │ │ │ │ │ └── user/ │ │ │ │ │ ├── Editor.tsx │ │ │ │ │ ├── EditorBase.spec.tsx │ │ │ │ │ ├── EditorBase.tsx │ │ │ │ │ ├── EditorMain.tsx │ │ │ │ │ ├── UserOption.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── expand-record/ │ │ │ │ │ ├── AiFieldGenerateButton.tsx │ │ │ │ │ ├── CellEditorWrap.tsx │ │ │ │ │ ├── CollapsibleCellValue.tsx │ │ │ │ │ ├── ExpandRecord.tsx │ │ │ │ │ ├── ExpandRecordHeader.tsx │ │ │ │ │ ├── ExpandRecordWrap.tsx │ │ │ │ │ ├── ExpandRecorder.tsx │ │ │ │ │ ├── Modal.tsx │ │ │ │ │ ├── ModalContext.ts │ │ │ │ │ ├── Panel.tsx │ │ │ │ │ ├── RecordEditor.tsx │ │ │ │ │ ├── RecordEditorItem.tsx │ │ │ │ │ ├── RecordHistory.tsx │ │ │ │ │ ├── TooltipWrap.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── CopyButton.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── type.ts │ │ │ │ │ └── useModalRefElement.ts │ │ │ │ ├── field/ │ │ │ │ │ ├── FieldCommand.tsx │ │ │ │ │ ├── FieldSelector.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── filter/ │ │ │ │ │ ├── BaseFilter.tsx │ │ │ │ │ ├── condition/ │ │ │ │ │ │ ├── Condition.tsx │ │ │ │ │ │ ├── Conjunction.tsx │ │ │ │ │ │ ├── ConjunctionSelect.tsx │ │ │ │ │ │ ├── condition-item/ │ │ │ │ │ │ │ ├── ConditionGroup.tsx │ │ │ │ │ │ │ ├── ConditionItem.tsx │ │ │ │ │ │ │ ├── base-component/ │ │ │ │ │ │ │ │ ├── FieldSelect.tsx │ │ │ │ │ │ │ │ ├── FieldValue.tsx │ │ │ │ │ │ │ │ ├── OperatorSelect.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── filter-with-table/ │ │ │ │ │ │ ├── FilterWithTable.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── useCallbackRef.ts │ │ │ │ │ │ ├── useComponent.ts │ │ │ │ │ │ ├── useControllableState.ts │ │ │ │ │ │ ├── useCrud.ts │ │ │ │ │ │ └── useDepth.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── view-filter/ │ │ │ │ │ ├── BaseViewFilter.tsx │ │ │ │ │ ├── ViewFilter.tsx │ │ │ │ │ ├── component/ │ │ │ │ │ │ ├── DefaultErrorLabel.tsx │ │ │ │ │ │ ├── FileTypeSelect.tsx │ │ │ │ │ │ ├── FilterCheckBox.tsx │ │ │ │ │ │ ├── FilterInput.tsx │ │ │ │ │ │ ├── FilterMultipleSelect.tsx │ │ │ │ │ │ ├── FilterSingleSelect.tsx │ │ │ │ │ │ ├── FilterUserSelect.tsx │ │ │ │ │ │ ├── base/ │ │ │ │ │ │ │ ├── BaseMultipleSelect.tsx │ │ │ │ │ │ │ ├── BaseSingleSelect.tsx │ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ │ ├── BaseMultipleSelect.test.tsx │ │ │ │ │ │ │ │ └── BaseSingleSelect.test.tsx │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── filter-link/ │ │ │ │ │ │ │ ├── DefaultList.tsx │ │ │ │ │ │ │ ├── DefaultTrigger.tsx │ │ │ │ │ │ │ ├── FilterLink.tsx │ │ │ │ │ │ │ ├── FilterLinkInput.tsx │ │ │ │ │ │ │ ├── FilterLinkSelect.tsx │ │ │ │ │ │ │ ├── StandDefaultList.tsx │ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── storage.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── filterDatePicker/ │ │ │ │ │ │ │ ├── DatePicker.tsx │ │ │ │ │ │ │ ├── DateRangePicker.tsx │ │ │ │ │ │ │ ├── FilterDatePicker.tsx │ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── custom-component/ │ │ │ │ │ │ ├── BaseFieldValue.tsx │ │ │ │ │ │ ├── FieldSelect.tsx │ │ │ │ │ │ ├── FieldValue.tsx │ │ │ │ │ │ ├── OperatorSelect.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── useDateI18nMap.ts │ │ │ │ │ │ ├── useFieldFilterLinkContext.ts │ │ │ │ │ │ ├── useFields.ts │ │ │ │ │ │ ├── useFilterNode.ts │ │ │ │ │ │ ├── useOperatorI18nMap.ts │ │ │ │ │ │ ├── useOperators.ts │ │ │ │ │ │ ├── useViewFilterContext.ts │ │ │ │ │ │ └── useViewFilterLinkContext.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── type-guard.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── grid/ │ │ │ │ │ ├── CellScroller.tsx │ │ │ │ │ ├── Grid.tsx │ │ │ │ │ ├── InfiniteScroller.tsx │ │ │ │ │ ├── InteractionLayer.tsx │ │ │ │ │ ├── RenderLayer.tsx │ │ │ │ │ ├── TouchLayer.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ErrorIndicator.tsx │ │ │ │ │ │ ├── LoadingIndicator.tsx │ │ │ │ │ │ ├── editor/ │ │ │ │ │ │ │ ├── BooleanEditor.tsx │ │ │ │ │ │ │ ├── EditorContainer.tsx │ │ │ │ │ │ │ ├── RatingEditor.tsx │ │ │ │ │ │ │ ├── SelectEditor.tsx │ │ │ │ │ │ │ ├── TextEditor.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── configs/ │ │ │ │ │ │ ├── grid.ts │ │ │ │ │ │ ├── gridTheme.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── useAutoScroll.ts │ │ │ │ │ │ ├── useColumnFreeze.ts │ │ │ │ │ │ ├── useColumnResize.ts │ │ │ │ │ │ ├── useDrag.ts │ │ │ │ │ │ ├── useEventListener.ts │ │ │ │ │ │ ├── useKeyboardSelection.ts │ │ │ │ │ │ ├── useResizeObserver.ts │ │ │ │ │ │ ├── useScrollFrameRate.ts │ │ │ │ │ │ ├── useSelection.ts │ │ │ │ │ │ └── useVisibleRegion.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── interface.ts │ │ │ │ │ ├── managers/ │ │ │ │ │ │ ├── coordinate-manager/ │ │ │ │ │ │ │ ├── Coordinate-manager.spec.ts │ │ │ │ │ │ │ ├── CoordinateManager.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── interface.ts │ │ │ │ │ │ ├── image-manager/ │ │ │ │ │ │ │ ├── ImageManager.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── performance-tracker/ │ │ │ │ │ │ │ ├── PerformanceTracker.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── selection-manager/ │ │ │ │ │ │ │ ├── CombinedSelection.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── sprite-manager/ │ │ │ │ │ │ ├── SpriteManager.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── sprites.tsx │ │ │ │ │ ├── renderers/ │ │ │ │ │ │ ├── base-renderer/ │ │ │ │ │ │ │ ├── baseRenderer.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── interface.ts │ │ │ │ │ │ ├── cell-renderer/ │ │ │ │ │ │ │ ├── booleanCellRenderer.ts │ │ │ │ │ │ │ ├── buttonCellRenderer.ts │ │ │ │ │ │ │ ├── chartCellRenderer.ts │ │ │ │ │ │ │ ├── imageCellRenderer.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── interface.ts │ │ │ │ │ │ │ ├── linkCellRenderer.ts │ │ │ │ │ │ │ ├── loadingCellRenderer.ts │ │ │ │ │ │ │ ├── numberCellRenderer.ts │ │ │ │ │ │ │ ├── ratingCellRenderer.ts │ │ │ │ │ │ │ ├── selectCellRenderer.ts │ │ │ │ │ │ │ ├── textCellRenderer.ts │ │ │ │ │ │ │ ├── userCellRenderer.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── layout-renderer/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── interface.ts │ │ │ │ │ │ └── layoutRenderer.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── element.ts │ │ │ │ │ ├── group.ts │ │ │ │ │ ├── hotkey.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── measure.ts │ │ │ │ │ ├── range.ts │ │ │ │ │ ├── region.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── grid-enhancements/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── grid-tooltip/ │ │ │ │ │ │ │ ├── GridTooltip.tsx │ │ │ │ │ │ │ ├── grid-tooltip.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── row-counter/ │ │ │ │ │ │ ├── RowCounter.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── editor/ │ │ │ │ │ │ ├── GridAttachmentEditor.tsx │ │ │ │ │ │ ├── GridDateEditor.tsx │ │ │ │ │ │ ├── GridFilePreviewer.tsx │ │ │ │ │ │ ├── GridLinkEditor.tsx │ │ │ │ │ │ ├── GridLongTextEditor.tsx │ │ │ │ │ │ ├── GridMarkdownEditor.tsx │ │ │ │ │ │ ├── GridNumberEditor.tsx │ │ │ │ │ │ ├── GridSelectEditor.tsx │ │ │ │ │ │ ├── GridUserEditor.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── constant.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── use-grid-async-records-query.ts │ │ │ │ │ │ ├── use-grid-async-records.ts │ │ │ │ │ │ ├── use-grid-collapsed-group.ts │ │ │ │ │ │ ├── use-grid-column-order.ts │ │ │ │ │ │ ├── use-grid-column-resize.ts │ │ │ │ │ │ ├── use-grid-column-statistics.ts │ │ │ │ │ │ ├── use-grid-columns.tsx │ │ │ │ │ │ ├── use-grid-file-event.ts │ │ │ │ │ │ ├── use-grid-group-collection.ts │ │ │ │ │ │ ├── use-grid-icons.ts │ │ │ │ │ │ ├── use-grid-popup-position.tsx │ │ │ │ │ │ ├── use-grid-prefilling-row.ts │ │ │ │ │ │ ├── use-grid-row-order.ts │ │ │ │ │ │ ├── use-grid-selection.ts │ │ │ │ │ │ └── use-grid-theme.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── store/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── type.ts │ │ │ │ │ │ ├── useBuildBaseAgentStore.ts │ │ │ │ │ │ ├── useGridCollapsedGroupStore.ts │ │ │ │ │ │ └── useGridViewStore.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── generate-id.ts │ │ │ │ │ ├── group-value.ts │ │ │ │ │ ├── image-handler.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── persist-editing.ts │ │ │ │ ├── group/ │ │ │ │ │ ├── Group.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── hide-fields/ │ │ │ │ │ ├── HideFields.tsx │ │ │ │ │ ├── HideFieldsBase.tsx │ │ │ │ │ ├── VisibleFields.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── useAttachmentPreviewI18Map.ts │ │ │ │ ├── index.ts │ │ │ │ ├── markdown-editor/ │ │ │ │ │ ├── EditorContainer.tsx │ │ │ │ │ ├── MarkDownEditor.tsx │ │ │ │ │ ├── MarkDownPreview.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── member-selector/ │ │ │ │ │ ├── DepartmentList.tsx │ │ │ │ │ ├── DepartmentSelector.tsx │ │ │ │ │ ├── MemberContent.tsx │ │ │ │ │ ├── MemberSelected.tsx │ │ │ │ │ ├── MemberSelectorDialog.tsx │ │ │ │ │ ├── SearchInput.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── DepartmentItem.tsx │ │ │ │ │ │ └── UserItem.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── use-debounce.ts │ │ │ │ ├── plate/ │ │ │ │ │ └── ui/ │ │ │ │ │ ├── button.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── useMounted.ts │ │ │ │ │ │ └── useUploadFile.ts │ │ │ │ │ ├── image-element.tsx │ │ │ │ │ ├── image-preview.tsx │ │ │ │ │ ├── inline-combobox.tsx │ │ │ │ │ ├── input.tsx │ │ │ │ │ ├── link-element-static.tsx │ │ │ │ │ ├── link-element.tsx │ │ │ │ │ ├── link-floating-toolbar.tsx │ │ │ │ │ ├── link-toolbar-button.tsx │ │ │ │ │ ├── media-placeholder-element.tsx │ │ │ │ │ ├── media-toolbar-button.tsx │ │ │ │ │ ├── media-upload-toast.tsx │ │ │ │ │ ├── mention-element-static.tsx │ │ │ │ │ ├── mention-element.tsx │ │ │ │ │ ├── mention-input-element.tsx │ │ │ │ │ ├── mention-toolbar-button.tsx │ │ │ │ │ ├── paragraph-element.tsx │ │ │ │ │ ├── popover.tsx │ │ │ │ │ ├── resize-handle.tsx │ │ │ │ │ ├── separator.tsx │ │ │ │ │ ├── toolbar.tsx │ │ │ │ │ └── tooltip.tsx │ │ │ │ ├── record-list/ │ │ │ │ │ ├── ApiRecordList.tsx │ │ │ │ │ ├── RecordItem.tsx │ │ │ │ │ ├── RecordList.tsx │ │ │ │ │ ├── RecordSearch.tsx │ │ │ │ │ ├── SocketRecordList.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── row-height/ │ │ │ │ │ ├── RowHeight.tsx │ │ │ │ │ ├── RowHeightBase.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useFieldNameDisplayLinesNodes.ts │ │ │ │ │ ├── useRowHeightNode.ts │ │ │ │ │ └── useRowHeightNodes.ts │ │ │ │ ├── search/ │ │ │ │ │ ├── SearchInput.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── select-field-dialog/ │ │ │ │ │ ├── FieldCreateOrSelectModal.tsx │ │ │ │ │ ├── FieldCreator.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── sort/ │ │ │ │ │ ├── DraggableSortList.tsx │ │ │ │ │ ├── OrderSelect.tsx │ │ │ │ │ ├── Sort.tsx │ │ │ │ │ ├── SortBase.tsx │ │ │ │ │ ├── SortConfig.tsx │ │ │ │ │ ├── SortContent.tsx │ │ │ │ │ ├── SortFieldAddButton.tsx │ │ │ │ │ ├── SortItem.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── useSortNode.ts │ │ │ │ ├── table/ │ │ │ │ │ ├── InfiniteTable.tsx │ │ │ │ │ ├── VirtualizedInfiniteTable.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── upload/ │ │ │ │ │ ├── EllipsisFileName.tsx │ │ │ │ │ ├── FileCover.tsx │ │ │ │ │ ├── FileZone.tsx │ │ │ │ │ └── useDragFile.ts │ │ │ │ └── view/ │ │ │ │ ├── ViewSelect.tsx │ │ │ │ ├── constant.ts │ │ │ │ └── index.ts │ │ │ ├── config/ │ │ │ │ ├── index.ts │ │ │ │ ├── local-storage-keys.ts │ │ │ │ └── react-query-keys.ts │ │ │ ├── context/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── createAppContext.tsx │ │ │ │ │ ├── createConnectionContext.tsx │ │ │ │ │ └── createSessionContext.tsx │ │ │ │ ├── aggregation/ │ │ │ │ │ ├── AggregationContext.ts │ │ │ │ │ ├── AggregationProvider.tsx │ │ │ │ │ ├── CalendarDailyCollectionContext.ts │ │ │ │ │ ├── CalendarDailyCollectionProvider.tsx │ │ │ │ │ ├── GroupPointContext.ts │ │ │ │ │ ├── GroupPointProvider.tsx │ │ │ │ │ ├── RowCountContext.ts │ │ │ │ │ ├── RowCountProvider.tsx │ │ │ │ │ ├── TaskStatusCollectionContext.ts │ │ │ │ │ ├── TaskStatusCollectionProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── anchor/ │ │ │ │ │ ├── AnchorContext.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── app/ │ │ │ │ │ ├── AppContext.ts │ │ │ │ │ ├── AppProvider.tsx │ │ │ │ │ ├── ConnectionContext.tsx │ │ │ │ │ ├── ConnectionProvider.tsx │ │ │ │ │ ├── QueryClientProvider.tsx │ │ │ │ │ ├── i18n/ │ │ │ │ │ │ ├── Trans.tsx │ │ │ │ │ │ ├── const.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── useTranslation.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── queryClient.spec.ts │ │ │ │ │ ├── queryClient.tsx │ │ │ │ │ ├── useConnection.tsx │ │ │ │ │ └── useConnectionAutoManage.ts │ │ │ │ ├── base/ │ │ │ │ │ ├── BaseContext.ts │ │ │ │ │ ├── BaseProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── field/ │ │ │ │ │ ├── FieldContext.ts │ │ │ │ │ ├── FieldProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── notification/ │ │ │ │ │ ├── NotificationContext.ts │ │ │ │ │ ├── NotificationProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── pending-upload/ │ │ │ │ │ ├── PendingUploadContext.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── query/ │ │ │ │ │ ├── LinkFilterContext.ts │ │ │ │ │ ├── LinkFilterProvider.tsx │ │ │ │ │ ├── SearchContext.ts │ │ │ │ │ ├── SearchProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── record/ │ │ │ │ │ ├── RecordContext.ts │ │ │ │ │ ├── RecordProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── session/ │ │ │ │ │ ├── SessionContext.ts │ │ │ │ │ ├── SessionProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── table/ │ │ │ │ │ ├── LinkViewProvider.tsx │ │ │ │ │ ├── ShareViewContext.tsx │ │ │ │ │ ├── ShareViewProxy.tsx │ │ │ │ │ ├── StandaloneViewProvider.tsx │ │ │ │ │ ├── TableContext.ts │ │ │ │ │ ├── TableProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── table-permission/ │ │ │ │ │ ├── TablePermissionContext.ts │ │ │ │ │ ├── TablePermissionProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── use-instances/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── opListener.ts │ │ │ │ │ ├── reducer.ts │ │ │ │ │ ├── use-instances.spec.tsx │ │ │ │ │ └── useInstances.ts │ │ │ │ └── view/ │ │ │ │ ├── PersonalViewContext.tsx │ │ │ │ ├── PersonalViewProvider.tsx │ │ │ │ ├── PersonalViewProxy.tsx │ │ │ │ ├── ViewContext.ts │ │ │ │ ├── ViewProvider.tsx │ │ │ │ ├── index.ts │ │ │ │ └── store/ │ │ │ │ ├── index.ts │ │ │ │ └── usePersonalViewStore.ts │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── use-aggregation.ts │ │ │ │ ├── use-ai.ts │ │ │ │ ├── use-base-id.ts │ │ │ │ ├── use-base-permission.ts │ │ │ │ ├── use-base.ts │ │ │ │ ├── use-button-click-status.ts │ │ │ │ ├── use-comment-count-map.ts │ │ │ │ ├── use-connection.ts │ │ │ │ ├── use-deep-compare-memoize.ts │ │ │ │ ├── use-document-visible.ts │ │ │ │ ├── use-field-operations.ts │ │ │ │ ├── use-field-permission.ts │ │ │ │ ├── use-field-static-getter.ts │ │ │ │ ├── use-field.ts │ │ │ │ ├── use-fields.ts │ │ │ │ ├── use-group-point.ts │ │ │ │ ├── use-infinite-records.ts │ │ │ │ ├── use-is-anonymous.ts │ │ │ │ ├── use-is-hydrated.ts │ │ │ │ ├── use-is-mobile.ts │ │ │ │ ├── use-is-readonly-preview.ts │ │ │ │ ├── use-is-template.ts │ │ │ │ ├── use-is-touch-device.ts │ │ │ │ ├── use-lan-dayjs.ts │ │ │ │ ├── use-link-filter.ts │ │ │ │ ├── use-notification.ts │ │ │ │ ├── use-organization.ts │ │ │ │ ├── use-permission-actions-static.spec.ts │ │ │ │ ├── use-permission-actions-static.ts │ │ │ │ ├── use-permission-update-listener.ts │ │ │ │ ├── use-personal-view.ts │ │ │ │ ├── use-presence.ts │ │ │ │ ├── use-record-operations.ts │ │ │ │ ├── use-record.ts │ │ │ │ ├── use-records-query.ts │ │ │ │ ├── use-records.ts │ │ │ │ ├── use-row-count.ts │ │ │ │ ├── use-search.ts │ │ │ │ ├── use-session.ts │ │ │ │ ├── use-share-id.ts │ │ │ │ ├── use-ssr-record.ts │ │ │ │ ├── use-ssr-records.ts │ │ │ │ ├── use-table-id.ts │ │ │ │ ├── use-table-listener.ts │ │ │ │ ├── use-table-permission.ts │ │ │ │ ├── use-table.ts │ │ │ │ ├── use-tables.ts │ │ │ │ ├── use-template.ts │ │ │ │ ├── use-undo-redo.ts │ │ │ │ ├── use-view-id.ts │ │ │ │ ├── use-view-listener.ts │ │ │ │ ├── use-view.ts │ │ │ │ └── use-views.ts │ │ │ ├── index.ts │ │ │ ├── model/ │ │ │ │ ├── base.ts │ │ │ │ ├── field/ │ │ │ │ │ ├── attachment.field.ts │ │ │ │ │ ├── auto-number.field.ts │ │ │ │ │ ├── button.field.ts │ │ │ │ │ ├── checkbox.field.ts │ │ │ │ │ ├── conditional-rollup.field.ts │ │ │ │ │ ├── created-by.field.ts │ │ │ │ │ ├── created-time.field.ts │ │ │ │ │ ├── date.field.ts │ │ │ │ │ ├── factory.spec.ts │ │ │ │ │ ├── factory.ts │ │ │ │ │ ├── field.ts │ │ │ │ │ ├── formula.field.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── last-modified-by.field.ts │ │ │ │ │ ├── last-modified-time.field.ts │ │ │ │ │ ├── link.field.ts │ │ │ │ │ ├── long-text.field.ts │ │ │ │ │ ├── mixin/ │ │ │ │ │ │ └── select.field.ts │ │ │ │ │ ├── multiple-select.field.ts │ │ │ │ │ ├── number.field.ts │ │ │ │ │ ├── rating.field.ts │ │ │ │ │ ├── rollup.field.ts │ │ │ │ │ ├── single-line-text.field.ts │ │ │ │ │ ├── single-select.field.ts │ │ │ │ │ └── user.field.ts │ │ │ │ ├── index.ts │ │ │ │ ├── record/ │ │ │ │ │ ├── factory.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── record.ts │ │ │ │ ├── table/ │ │ │ │ │ ├── factory.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── table.ts │ │ │ │ └── view/ │ │ │ │ ├── calendar.view.ts │ │ │ │ ├── factory.ts │ │ │ │ ├── form.view.ts │ │ │ │ ├── gallery.view.ts │ │ │ │ ├── grid.view.ts │ │ │ │ ├── index.ts │ │ │ │ ├── kanban.view.ts │ │ │ │ ├── plugin.view.ts │ │ │ │ └── view.ts │ │ │ ├── plugin-bridge/ │ │ │ │ ├── bridge.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── use-bridge.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── store/ │ │ │ │ ├── index.ts │ │ │ │ ├── pending-upload-create.spec.ts │ │ │ │ ├── pending-upload-create.ts │ │ │ │ ├── use-attachment-upload-store.spec.ts │ │ │ │ ├── use-attachment-upload-store.ts │ │ │ │ ├── use-download-attachments-store.ts │ │ │ │ └── use-interaction-mode-store.ts │ │ │ └── utils/ │ │ │ ├── copy.ts │ │ │ ├── fieldType.ts │ │ │ ├── filterWithDefaultValue.ts │ │ │ ├── index.ts │ │ │ ├── order.ts │ │ │ ├── personalView.ts │ │ │ ├── reconnectingSockJS.ts │ │ │ ├── requestWrap.ts │ │ │ ├── sprite.tsx │ │ │ ├── statistic.ts │ │ │ └── urlParams.ts │ │ ├── tailwind.config.cjs │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── ui.config.cjs │ │ ├── ui.config.d.ts │ │ └── vitest.config.ts │ ├── ui-lib/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── modules.xml │ │ │ └── ui-lib.iml │ │ ├── .storybook/ │ │ │ ├── main.js │ │ │ └── preview.js │ │ ├── LICENSE │ │ ├── components.json │ │ ├── lint-staged.config.js │ │ ├── package.json │ │ ├── postcss.config.js │ │ ├── scripts/ │ │ │ ├── shadcn-ui.mjs │ │ │ └── update-shadcn-ui.mjs │ │ ├── src/ │ │ │ ├── _stories/ │ │ │ │ ├── Introduction.stories.mdx │ │ │ │ └── tailwind.css │ │ │ ├── async-message.tsx │ │ │ ├── base/ │ │ │ │ ├── Error.tsx │ │ │ │ ├── card/ │ │ │ │ │ └── BasicCard.tsx │ │ │ │ ├── dialog/ │ │ │ │ │ ├── ConfirmDialog.tsx │ │ │ │ │ ├── confirm-modal/ │ │ │ │ │ │ ├── ConfirmModal.tsx │ │ │ │ │ │ ├── confirm.ts │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── dnd-kit/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── file/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── preview/ │ │ │ │ │ ├── FilePreview.tsx │ │ │ │ │ ├── FilePreviewContent.tsx │ │ │ │ │ ├── FilePreviewContext.tsx │ │ │ │ │ ├── FilePreviewDialog.tsx │ │ │ │ │ ├── FilePreviewItem.tsx │ │ │ │ │ ├── FilePreviewProvider.tsx │ │ │ │ │ ├── Thumb.tsx │ │ │ │ │ ├── audio/ │ │ │ │ │ │ └── AudioPreview.tsx │ │ │ │ │ ├── genFileId.ts │ │ │ │ │ ├── getFileIcon.ts │ │ │ │ │ ├── image/ │ │ │ │ │ │ └── ImagePreview.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── office/ │ │ │ │ │ │ ├── ExcelPreview.tsx │ │ │ │ │ │ ├── WordPreview.tsx │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── pdf/ │ │ │ │ │ │ ├── PDFPreview.tsx │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── video/ │ │ │ │ │ └── VideoPreview.tsx │ │ │ │ ├── headless-tree/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── selector/ │ │ │ │ │ └── Selector.tsx │ │ │ │ └── spin/ │ │ │ │ └── Spin.tsx │ │ │ ├── hooks/ │ │ │ │ └── use-is-mobile.tsx │ │ │ ├── icons/ │ │ │ │ └── social/ │ │ │ │ └── README.md │ │ │ ├── index.ts │ │ │ ├── message.tsx │ │ │ └── shadcn/ │ │ │ ├── global.shadcn.css │ │ │ ├── index.ts │ │ │ ├── ui/ │ │ │ │ ├── accordion.tsx │ │ │ │ ├── alert-dialog.tsx │ │ │ │ ├── alert.tsx │ │ │ │ ├── avatar.tsx │ │ │ │ ├── badge.tsx │ │ │ │ ├── breadcrumb.tsx │ │ │ │ ├── button.tsx │ │ │ │ ├── calendar.tsx │ │ │ │ ├── card.tsx │ │ │ │ ├── carousel.tsx │ │ │ │ ├── chart.tsx │ │ │ │ ├── checkbox.tsx │ │ │ │ ├── collapsible.tsx │ │ │ │ ├── command.tsx │ │ │ │ ├── context-menu.tsx │ │ │ │ ├── dialog.tsx │ │ │ │ ├── dropdown-menu.tsx │ │ │ │ ├── form.tsx │ │ │ │ ├── hover-card.tsx │ │ │ │ ├── input-group.tsx │ │ │ │ ├── input-otp.tsx │ │ │ │ ├── input.tsx │ │ │ │ ├── label.tsx │ │ │ │ ├── popover.tsx │ │ │ │ ├── progress.tsx │ │ │ │ ├── radio-group.tsx │ │ │ │ ├── resizable.tsx │ │ │ │ ├── scroll-area.tsx │ │ │ │ ├── select.tsx │ │ │ │ ├── separator.tsx │ │ │ │ ├── sheet.tsx │ │ │ │ ├── skeleton.tsx │ │ │ │ ├── slider.tsx │ │ │ │ ├── sonner.tsx │ │ │ │ ├── switch.tsx │ │ │ │ ├── table.tsx │ │ │ │ ├── tabs.tsx │ │ │ │ ├── textarea.tsx │ │ │ │ ├── toast.tsx │ │ │ │ ├── toaster.tsx │ │ │ │ ├── toggle-group.tsx │ │ │ │ ├── toggle.tsx │ │ │ │ ├── tooltip.tsx │ │ │ │ ├── tree.tsx │ │ │ │ └── use-toast.ts │ │ │ └── utils.ts │ │ ├── tailwind.config.cjs │ │ ├── tailwind.shadcnui.config.cjs │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── ui.config.cjs │ │ └── ui.config.d.ts │ └── v2/ │ ├── adapter-csv-parser-papaparse/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── PapaparseCsvParser.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── adapter-db-postgres-pg/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── config.ts │ │ │ ├── createDb.spec.ts │ │ │ ├── createDb.ts │ │ │ ├── di/ │ │ │ │ ├── register.ts │ │ │ │ └── tokens.ts │ │ │ ├── index.ts │ │ │ └── unitOfWork.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── adapter-db-postgres-pglite/ │ │ ├── .eslintrc.cjs │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── createDb.ts │ │ │ ├── di/ │ │ │ │ └── register.ts │ │ │ ├── index.ts │ │ │ └── kyselyPgliteBrowser.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── adapter-db-postgres-postgresjs/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── createDb.ts │ │ │ ├── di/ │ │ │ │ └── register.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── adapter-db-postgres-shared/ │ │ ├── .eslintrc.cjs │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── config.ts │ │ │ ├── di/ │ │ │ │ └── tokens.ts │ │ │ ├── index.ts │ │ │ └── unitOfWork.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── adapter-logger-console/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ConsoleLogger.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── adapter-logger-pino/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── BroadcastLogger.ts │ │ │ ├── PinoLoggerAdapter.ts │ │ │ ├── index.ts │ │ │ └── pino.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── adapter-realtime-broadcastchannel/ │ │ ├── .eslintrc.cjs │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── BroadcastChannelRealtimeEngine.ts │ │ │ ├── BroadcastChannelRealtimeHub.ts │ │ │ ├── di/ │ │ │ │ ├── register.ts │ │ │ │ └── tokens.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── adapter-realtime-sharedb/ │ │ ├── .eslintrc.cjs │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ShareDbBackendPublisher.ts │ │ │ ├── ShareDbPubSubPublisher.spec.ts │ │ │ ├── ShareDbPubSubPublisher.ts │ │ │ ├── ShareDbPublisher.ts │ │ │ ├── ShareDbRealtimeEngine.spec.ts │ │ │ ├── ShareDbRealtimeEngine.ts │ │ │ ├── ShareDbWebSocketServer.ts │ │ │ ├── di/ │ │ │ │ ├── register.ts │ │ │ │ └── tokens.ts │ │ │ ├── index.ts │ │ │ └── websocket-json-stream.d.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── adapter-repository-postgres/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── config.ts │ │ │ ├── db/ │ │ │ │ ├── schema.ts │ │ │ │ └── tableDbMeta.ts │ │ │ ├── di/ │ │ │ │ ├── register.ts │ │ │ │ └── tokens.ts │ │ │ ├── index.ts │ │ │ ├── naming.ts │ │ │ └── repositories/ │ │ │ ├── PostgresBaseRepository.ts │ │ │ ├── PostgresTableRepository.spec.ts │ │ │ ├── PostgresTableRepository.ts │ │ │ ├── PostgresTableRowLimitPlugin.spec.ts │ │ │ ├── PostgresTableRowLimitPlugin.ts │ │ │ ├── TableFieldPersistenceBuilder.ts │ │ │ └── visitors/ │ │ │ ├── FieldStorageTypeVisitor.spec.ts │ │ │ ├── FieldStorageTypeVisitor.ts │ │ │ ├── TableMetaUpdateVisitor.ts │ │ │ ├── TableRecordConditionWhereVisitor.spec.ts │ │ │ ├── TableRecordConditionWhereVisitor.ts │ │ │ ├── TableRecordSelectColumnsVisitor.ts │ │ │ ├── TableWhereVisitor.ts │ │ │ └── __snapshots__/ │ │ │ └── TableRecordConditionWhereVisitor.spec.ts.snap │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── adapter-table-repository-postgres/ │ │ ├── .eslintrc.cjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── di/ │ │ │ │ ├── index.ts │ │ │ │ ├── register.ts │ │ │ │ └── tokens.ts │ │ │ ├── index.ts │ │ │ ├── meta/ │ │ │ │ ├── MetaChecker.ts │ │ │ │ ├── MetaValidationContext.ts │ │ │ │ ├── MetaValidationResult.ts │ │ │ │ ├── MetaValidationVisitor.ts │ │ │ │ └── index.ts │ │ │ ├── record/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── computed/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── ComputedFieldBackfillService.spec.ts │ │ │ │ │ ├── ComputedFieldBackfillService.ts │ │ │ │ │ ├── ComputedFieldCascadeAfterSchemaUpdate.ts │ │ │ │ │ ├── ComputedFieldUpdater.ts │ │ │ │ │ ├── ComputedUpdateDrainService.spec.ts │ │ │ │ │ ├── ComputedUpdateDrainService.ts │ │ │ │ │ ├── ComputedUpdateLock.ts │ │ │ │ │ ├── ComputedUpdatePlanner.ts │ │ │ │ │ ├── ComputedUpdateRun.ts │ │ │ │ │ ├── ExternalComputedRefreshService.spec.ts │ │ │ │ │ ├── ExternalComputedRefreshService.ts │ │ │ │ │ ├── FieldDependencyGraph.ts │ │ │ │ │ ├── RunComputedTaskByIdCommand.ts │ │ │ │ │ ├── RunComputedTaskByIdHandler.ts │ │ │ │ │ ├── UpdateFromSelectBuilder.ts │ │ │ │ │ ├── UserRenamePropagationService.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── ComputedFieldCascadeAfterSchemaUpdate.spec.ts │ │ │ │ │ │ ├── ComputedFieldUpdater.spec.ts │ │ │ │ │ │ ├── ComputedUpdateLock.spec.ts │ │ │ │ │ │ ├── ComputedUpdatePlanner.spec.ts │ │ │ │ │ │ ├── FieldDependencyGraph.pglite.spec.ts │ │ │ │ │ │ ├── SameTableBatch.spec.ts │ │ │ │ │ │ ├── UpdateFromSelectBuilder.lookup.spec.ts │ │ │ │ │ │ ├── UpdateFromSelectBuilder.spec.ts │ │ │ │ │ │ └── UserFields.pglite.spec.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── isPersistedAsGeneratedColumn.ts │ │ │ │ │ ├── outbox/ │ │ │ │ │ │ ├── ComputedUpdateOutbox.spec.ts │ │ │ │ │ │ ├── ComputedUpdateOutbox.ts │ │ │ │ │ │ ├── ComputedUpdateOutboxPayload.spec.ts │ │ │ │ │ │ ├── ComputedUpdateOutboxPayload.ts │ │ │ │ │ │ ├── ComputedUpdateSeedPayload.spec.ts │ │ │ │ │ │ ├── ComputedUpdateSeedPayload.ts │ │ │ │ │ │ ├── FieldBackfillOutboxPayload.ts │ │ │ │ │ │ ├── IComputedUpdateOutbox.ts │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ └── ComputedUpdateOutbox.deadlock.pglite.spec.ts │ │ │ │ │ ├── strategies/ │ │ │ │ │ │ ├── AsyncWithRetryStrategy.ts │ │ │ │ │ │ ├── HybridWithOutboxStrategy.spec.ts │ │ │ │ │ │ ├── HybridWithOutboxStrategy.ts │ │ │ │ │ │ ├── IUpdateStrategy.ts │ │ │ │ │ │ ├── SyncInTransactionStrategy.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── types/ │ │ │ │ │ │ ├── UpdateTrigger.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── worker/ │ │ │ │ │ ├── ComputedUpdatePollingService.ts │ │ │ │ │ ├── ComputedUpdateWorker.spec.ts │ │ │ │ │ └── ComputedUpdateWorker.ts │ │ │ │ ├── di/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── tokens.ts │ │ │ │ ├── index.ts │ │ │ │ ├── query-builder/ │ │ │ │ │ ├── FieldOutputColumnVisitor.ts │ │ │ │ │ ├── ITableRecordQueryBuilder.ts │ │ │ │ │ ├── TableRecordQueryBuilderManager.ts │ │ │ │ │ ├── computed/ │ │ │ │ │ │ ├── ComputedFieldSelectExpressionVisitor.formula.spec.ts │ │ │ │ │ │ ├── ComputedFieldSelectExpressionVisitor.ts │ │ │ │ │ │ ├── ComputedFieldSelectExpressionVisitor.userFields.spec.ts │ │ │ │ │ │ ├── ComputedTableRecordQueryBuilder.spec.ts │ │ │ │ │ │ ├── ComputedTableRecordQueryBuilder.ts │ │ │ │ │ │ ├── FieldReferenceSqlVisitor.spec.ts │ │ │ │ │ │ ├── FieldReferenceSqlVisitor.ts │ │ │ │ │ │ ├── SameTableBatchQueryBuilder.spec.ts │ │ │ │ │ │ ├── SameTableBatchQueryBuilder.ts │ │ │ │ │ │ ├── SameTableBatchSqlPlan.ts │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── ComputedTableRecordQueryBuilder.spec.ts.snap │ │ │ │ │ │ │ └── FieldReferenceSqlVisitor.spec.ts.snap │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── dateLikeOrderBy.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── insert/ │ │ │ │ │ │ ├── RecordInsertBuilder.spec.ts │ │ │ │ │ │ ├── RecordInsertBuilder.ts │ │ │ │ │ │ ├── RecordInsertBuilder.userFields.spec.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── stored/ │ │ │ │ │ │ ├── StoredFieldSelectVisitor.ts │ │ │ │ │ │ ├── StoredTableRecordQueryBuilder.spec.ts │ │ │ │ │ │ ├── StoredTableRecordQueryBuilder.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── update/ │ │ │ │ │ ├── BatchRecordUpdateBuilder.ts │ │ │ │ │ ├── BatchUpdateSqlBuilder.spec.ts │ │ │ │ │ ├── BatchUpdateSqlBuilder.ts │ │ │ │ │ ├── RecordUpdateBuilder.ts │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── BatchUpdateSqlBuilder.spec.ts.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── repository/ │ │ │ │ │ ├── CursorStreamPaginationStrategy.spec.ts │ │ │ │ │ ├── CursorStreamPaginationStrategy.ts │ │ │ │ │ ├── OffsetStreamPaginationStrategy.spec.ts │ │ │ │ │ ├── OffsetStreamPaginationStrategy.ts │ │ │ │ │ ├── PostgresAttachmentLookupService.ts │ │ │ │ │ ├── PostgresRecordOrderCalculator.pglite.spec.ts │ │ │ │ │ ├── PostgresRecordOrderCalculator.ts │ │ │ │ │ ├── PostgresTableRecordQueryRepository.pglite.spec.ts │ │ │ │ │ ├── PostgresTableRecordQueryRepository.ts │ │ │ │ │ ├── PostgresTableRecordRepository.delete.spec.ts │ │ │ │ │ ├── PostgresTableRecordRepository.exclusivity.spec.ts │ │ │ │ │ ├── PostgresTableRecordRepository.insert.pglite.spec.ts │ │ │ │ │ ├── PostgresTableRecordRepository.ts │ │ │ │ │ ├── PostgresTableRecordRepository.update.spec.ts │ │ │ │ │ ├── PostgresTableRecordRepository.updateMany.pglite.spec.ts │ │ │ │ │ ├── PostgresUserLookupService.ts │ │ │ │ │ ├── RecordSearchWhereBuilder.pglite.spec.ts │ │ │ │ │ ├── RecordSearchWhereBuilder.ts │ │ │ │ │ ├── buildRecordWhereClause.ts │ │ │ │ │ └── index.ts │ │ │ │ └── visitors/ │ │ │ │ ├── CellValueMutateVisitor.ts │ │ │ │ ├── FieldDatabaseValueVisitor.ts │ │ │ │ ├── FieldDeleteValueVisitor.ts │ │ │ │ ├── FieldInsertValueVisitor.ts │ │ │ │ ├── FieldSqlLiteralVisitor.spec.ts │ │ │ │ ├── FieldSqlLiteralVisitor.ts │ │ │ │ ├── LinkChangeCollectorVisitor.ts │ │ │ │ ├── LinkExclusivityConstraintCollector.ts │ │ │ │ ├── TableRecordConditionWhereVisitor.spec.ts │ │ │ │ ├── TableRecordConditionWhereVisitor.ts │ │ │ │ └── index.ts │ │ │ ├── schema/ │ │ │ │ ├── config.ts │ │ │ │ ├── di/ │ │ │ │ │ ├── register.ts │ │ │ │ │ └── tokens.ts │ │ │ │ ├── helpers/ │ │ │ │ │ ├── detectCircularDependency.spec.ts │ │ │ │ │ └── detectCircularDependency.ts │ │ │ │ ├── index.ts │ │ │ │ ├── naming.ts │ │ │ │ ├── repositories/ │ │ │ │ │ ├── PostgresTableSchemaRepository.spec.ts │ │ │ │ │ ├── PostgresTableSchemaRepository.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── rules/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── checker/ │ │ │ │ │ │ ├── SchemaCheckResult.ts │ │ │ │ │ │ ├── SchemaChecker.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── context/ │ │ │ │ │ │ ├── PostgresSchemaIntrospector.ts │ │ │ │ │ │ ├── SchemaIntrospector.ts │ │ │ │ │ │ ├── SchemaRuleContext.ts │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── PostgresSchemaIntrospector.integration.spec.ts.snap │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── core/ │ │ │ │ │ │ ├── ISchemaRule.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── field/ │ │ │ │ │ │ ├── ColumnExistsRule.ts │ │ │ │ │ │ ├── ColumnUniqueConstraintRule.ts │ │ │ │ │ │ ├── FieldMetaRule.ts │ │ │ │ │ │ ├── FieldSchemaRulesFactory.ts │ │ │ │ │ │ ├── FkColumnRule.ts │ │ │ │ │ │ ├── ForeignKeyRule.ts │ │ │ │ │ │ ├── GeneratedColumnRule.ts │ │ │ │ │ │ ├── IndexRule.ts │ │ │ │ │ │ ├── JunctionTableRule.ts │ │ │ │ │ │ ├── LinkSymmetricFieldRule.ts │ │ │ │ │ │ ├── LinkValueColumnRule.ts │ │ │ │ │ │ ├── NotNullConstraintRule.ts │ │ │ │ │ │ ├── OrderColumnRule.ts │ │ │ │ │ │ ├── ReferenceRule.ts │ │ │ │ │ │ ├── SchemaRules.pglite.spec.ts │ │ │ │ │ │ ├── UniqueIndexRule.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ ├── StatementBuilders.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── resolver/ │ │ │ │ │ ├── SchemaRuleResolver.spec.ts │ │ │ │ │ ├── SchemaRuleResolver.ts │ │ │ │ │ └── index.ts │ │ │ │ └── visitors/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── DependencyChangeDetectorVisitor.ts │ │ │ │ ├── FieldTypeConversionVisitor.ts │ │ │ │ ├── FieldValueChangeCollectorVisitor.ts │ │ │ │ ├── FieldValueDuplicateVisitor.ts │ │ │ │ ├── LinkFieldValueDuplicateVisitor.ts │ │ │ │ ├── PostgresTableSchemaFieldColumn.ts │ │ │ │ ├── PostgresTableSchemaFieldCreateVisitor.ts │ │ │ │ ├── PostgresTableSchemaFieldDeleteVisitor.ts │ │ │ │ ├── TableAddFieldCollectorVisitor.ts │ │ │ │ ├── TableSchemaUpdateVisitor.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── FieldTypeConversionVisitor.pglite.spec.ts │ │ │ │ │ ├── FieldTypeConversionVisitor.spec.ts │ │ │ │ │ ├── FieldValueChangeCollectorVisitor.spec.ts │ │ │ │ │ ├── LookupColumnType.pglite.spec.ts │ │ │ │ │ ├── TableSchemaUpdateVisitor.pglite.spec.ts │ │ │ │ │ ├── TableSchemaUpdateVisitor.spec.ts │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── TableSchemaUpdateVisitor.spec.ts.snap │ │ │ │ │ └── helpers/ │ │ │ │ │ ├── createPGliteDb.ts │ │ │ │ │ ├── createTestDb.ts │ │ │ │ │ ├── fieldFactories.ts │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── shared/ │ │ │ │ ├── db.ts │ │ │ │ ├── errors.spec.ts │ │ │ │ ├── errors.ts │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ ├── detectPgCapability.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── adapter-undo-redo-keyv/ │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── KeyvUndoRedoStore.spec.ts │ │ │ ├── KeyvUndoRedoStore.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── benchmark-node/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── computed-cte-batch.bench.ts │ │ │ ├── computed-fanout.bench.ts │ │ │ ├── create-record.bench.ts │ │ │ ├── create-table.bench.ts │ │ │ ├── db-adapter.bench.ts │ │ │ ├── get-table-by-id.bench.ts │ │ │ ├── index.ts │ │ │ └── row-ops.bench.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── command-explain/ │ │ ├── .eslintrc.cjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── analyzers/ │ │ │ │ ├── CreateFieldAnalyzer.ts │ │ │ │ ├── CreateRecordAnalyzer.ts │ │ │ │ ├── DeleteFieldAnalyzer.ts │ │ │ │ ├── DeleteRecordsAnalyzer.ts │ │ │ │ ├── DeleteTableAnalyzer.ts │ │ │ │ ├── FieldCommandAnalyzeHelpers.ts │ │ │ │ ├── ICommandAnalyzer.ts │ │ │ │ ├── PasteCommandAnalyzer.ts │ │ │ │ ├── UpdateFieldAnalyzer.ts │ │ │ │ ├── UpdateRecordAnalyzer.ts │ │ │ │ └── index.ts │ │ │ ├── di/ │ │ │ │ ├── index.ts │ │ │ │ ├── register.ts │ │ │ │ └── tokens.ts │ │ │ ├── index.ts │ │ │ ├── service/ │ │ │ │ ├── ExplainService.ts │ │ │ │ └── index.ts │ │ │ ├── types/ │ │ │ │ ├── ComplexityAssessment.ts │ │ │ │ ├── ExplainOptions.ts │ │ │ │ ├── ExplainResult.ts │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ ├── ComplexityCalculator.ts │ │ │ ├── ComputedUpdateLockInfoBuilder.ts │ │ │ ├── ComputedUpdateReasonBuilder.ts │ │ │ ├── DirtyTableSetupBuilder.ts │ │ │ ├── FieldCommandExplainHarness.ts │ │ │ ├── LinkRecordLockInfoBuilder.ts │ │ │ ├── SqlExplainRunner.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── container-browser/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── container-node/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── container-node-test/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ComputedPlanSnapshot.ts │ │ │ ├── SpyLogger.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── contract-http/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base/ │ │ │ │ ├── createBase.ts │ │ │ │ ├── dto.ts │ │ │ │ └── listBases.ts │ │ │ ├── contract.ts │ │ │ ├── index.ts │ │ │ ├── shared/ │ │ │ │ ├── container.ts │ │ │ │ ├── domainEvent.ts │ │ │ │ ├── http.ts │ │ │ │ └── neverthrow.ts │ │ │ └── table/ │ │ │ ├── clear.ts │ │ │ ├── createField.ts │ │ │ ├── createRecord.ts │ │ │ ├── createRecords.ts │ │ │ ├── createTable.ts │ │ │ ├── createTables.ts │ │ │ ├── deleteByRange.ts │ │ │ ├── deleteField.ts │ │ │ ├── deleteRecords.ts │ │ │ ├── deleteTable.ts │ │ │ ├── dto.ts │ │ │ ├── duplicateField.ts │ │ │ ├── duplicateRecord.ts │ │ │ ├── explainCommand.ts │ │ │ ├── getRecordById.ts │ │ │ ├── getTableById.ts │ │ │ ├── importCsv.ts │ │ │ ├── importRecords.ts │ │ │ ├── listTableRecords.ts │ │ │ ├── listTables.ts │ │ │ ├── mapTableDtoToDomain.ts │ │ │ ├── paste.ts │ │ │ ├── recordDto.ts │ │ │ ├── renameTable.ts │ │ │ ├── reorderRecords.ts │ │ │ ├── restoreTable.ts │ │ │ ├── submitRecord.ts │ │ │ ├── updateField.ts │ │ │ ├── updateRecord.ts │ │ │ └── updateRecords.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── contract-http-client/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── contract-http-express/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── contract-http-fastify/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── contract-http-hono/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── contract-http-implementation/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── handlers/ │ │ │ │ ├── bases/ │ │ │ │ │ ├── createBase.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── listBases.ts │ │ │ │ ├── index.ts │ │ │ │ └── tables/ │ │ │ │ ├── clear.ts │ │ │ │ ├── createField.ts │ │ │ │ ├── createRecord.ts │ │ │ │ ├── createRecords.ts │ │ │ │ ├── createTable.ts │ │ │ │ ├── createTables.ts │ │ │ │ ├── deleteByRange.ts │ │ │ │ ├── deleteField.ts │ │ │ │ ├── deleteRecords.ts │ │ │ │ ├── deleteTable.ts │ │ │ │ ├── duplicateField.ts │ │ │ │ ├── duplicateRecord.ts │ │ │ │ ├── explainCommand.ts │ │ │ │ ├── getRecordById.ts │ │ │ │ ├── getTableById.ts │ │ │ │ ├── importCsv.ts │ │ │ │ ├── importRecords.ts │ │ │ │ ├── index.ts │ │ │ │ ├── listTableRecords.ts │ │ │ │ ├── listTables.ts │ │ │ │ ├── paste.ts │ │ │ │ ├── renameTable.ts │ │ │ │ ├── reorderRecords.ts │ │ │ │ ├── restoreTable.ts │ │ │ │ ├── submitRecord.ts │ │ │ │ ├── updateField.ts │ │ │ │ ├── updateRecord.ts │ │ │ │ └── updateRecords.ts │ │ │ ├── index.ts │ │ │ └── router.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── contract-http-openapi/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── generate.ts │ │ │ ├── index.ts │ │ │ └── openapi.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── core/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── docs/ │ │ │ └── CREATE_RECORD_ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ARCHITECTURE.md │ │ │ ├── application/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── projections/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── BatchRecordRefreshPolicy.ts │ │ │ │ │ ├── FieldCreatedRealtimeProjection.ts │ │ │ │ │ ├── FieldDeletedRealtimeProjection.ts │ │ │ │ │ ├── FieldOptionsAddedRealtimeProjection.ts │ │ │ │ │ ├── FieldRealtimeShapeRefresh.ts │ │ │ │ │ ├── FieldUpdatedRealtimeProjection.ts │ │ │ │ │ ├── Projection.ts │ │ │ │ │ ├── RealtimeProjection.ts │ │ │ │ │ ├── RealtimeProjections.spec.ts │ │ │ │ │ ├── RecordCreatedRealtimeProjection.ts │ │ │ │ │ ├── RecordReorderedRealtimeProjection.ts │ │ │ │ │ ├── RecordUpdatedRealtimeProjection.ts │ │ │ │ │ ├── RecordsBatchCreatedRealtimeProjection.ts │ │ │ │ │ ├── RecordsBatchUpdatedRealtimeProjection.ts │ │ │ │ │ ├── RecordsDeletedRealtimeProjection.ts │ │ │ │ │ ├── TableCreatedRealtimeProjection.ts │ │ │ │ │ ├── TableRecordRealtimeDTO.ts │ │ │ │ │ └── ViewColumnMetaUpdatedRealtimeProjection.ts │ │ │ │ └── services/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── AttachmentValueResolverService.spec.ts │ │ │ │ ├── AttachmentValueResolverService.ts │ │ │ │ ├── FieldCreationSideEffectService.ts │ │ │ │ ├── FieldCrossTableUpdateSideEffectService.spec.ts │ │ │ │ ├── FieldCrossTableUpdateSideEffectService.ts │ │ │ │ ├── FieldDeletionSideEffectService.ts │ │ │ │ ├── FieldKeyResolverService.ts │ │ │ │ ├── FieldOperationPluginRunner.spec.ts │ │ │ │ ├── FieldOperationPluginRunner.ts │ │ │ │ ├── FieldOperationSideEffectPluginSupport.ts │ │ │ │ ├── FieldUndoRedoReplayService.ts │ │ │ │ ├── FieldUndoRedoSnapshotService.ts │ │ │ │ ├── FieldUpdateSideEffectService.spec.ts │ │ │ │ ├── FieldUpdateSideEffectService.ts │ │ │ │ ├── ForeignTableLoaderService.spec.ts │ │ │ │ ├── ForeignTableLoaderService.ts │ │ │ │ ├── LinkFieldUpdateSideEffectService.ts │ │ │ │ ├── LinkTitleResolverService.spec.ts │ │ │ │ ├── LinkTitleResolverService.ts │ │ │ │ ├── RecordCreationService.ts │ │ │ │ ├── RecordMutationSpecResolverService.spec.ts │ │ │ │ ├── RecordMutationSpecResolverService.ts │ │ │ │ ├── RecordWritePluginRunner.spec.ts │ │ │ │ ├── RecordWritePluginRunner.ts │ │ │ │ ├── RecordWriteSideEffectService.ts │ │ │ │ ├── RecordWriteUndoRedoPlanService.ts │ │ │ │ ├── SpecResolver.ts │ │ │ │ ├── TableCreationService.spec.ts │ │ │ │ ├── TableCreationService.ts │ │ │ │ ├── TableDeletionSideEffectService.spec.ts │ │ │ │ ├── TableDeletionSideEffectService.ts │ │ │ │ ├── TableFieldLimitFieldOperationPlugin.ts │ │ │ │ ├── TableQueryService.spec.ts │ │ │ │ ├── TableQueryService.ts │ │ │ │ ├── TableUpdateFlow.spec.ts │ │ │ │ ├── TableUpdateFlow.ts │ │ │ │ ├── TableUpdateTransactionScope.ts │ │ │ │ ├── UndoRedoService.spec.ts │ │ │ │ ├── UndoRedoService.ts │ │ │ │ ├── UserValueResolverService.spec.ts │ │ │ │ └── UserValueResolverService.ts │ │ │ ├── commands/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── ApplyFieldSnapshotCommand.ts │ │ │ │ ├── ApplyFieldSnapshotHandler.ts │ │ │ │ ├── ApplyRecordOrdersCommand.ts │ │ │ │ ├── ApplyRecordOrdersHandler.ts │ │ │ │ ├── ClearCommand.spec.ts │ │ │ │ ├── ClearCommand.ts │ │ │ │ ├── ClearHandler.spec.ts │ │ │ │ ├── ClearHandler.ts │ │ │ │ ├── CommandHandler.ts │ │ │ │ ├── CreateBaseCommand.spec.ts │ │ │ │ ├── CreateBaseCommand.ts │ │ │ │ ├── CreateBaseHandler.spec.ts │ │ │ │ ├── CreateBaseHandler.ts │ │ │ │ ├── CreateFieldCommand.spec.ts │ │ │ │ ├── CreateFieldCommand.ts │ │ │ │ ├── CreateFieldHandler.spec.ts │ │ │ │ ├── CreateFieldHandler.ts │ │ │ │ ├── CreateFieldsCommand.ts │ │ │ │ ├── CreateFieldsHandler.spec.ts │ │ │ │ ├── CreateFieldsHandler.ts │ │ │ │ ├── CreateRecordCommand.spec.ts │ │ │ │ ├── CreateRecordCommand.ts │ │ │ │ ├── CreateRecordHandler.spec.ts │ │ │ │ ├── CreateRecordHandler.ts │ │ │ │ ├── CreateRecordsCommand.spec.ts │ │ │ │ ├── CreateRecordsCommand.ts │ │ │ │ ├── CreateRecordsHandler.spec.ts │ │ │ │ ├── CreateRecordsHandler.ts │ │ │ │ ├── CreateRecordsStreamCommand.spec.ts │ │ │ │ ├── CreateRecordsStreamCommand.ts │ │ │ │ ├── CreateRecordsStreamHandler.spec.ts │ │ │ │ ├── CreateRecordsStreamHandler.ts │ │ │ │ ├── CreateTableCommand.spec.ts │ │ │ │ ├── CreateTableCommand.ts │ │ │ │ ├── CreateTableHandler.spec.ts │ │ │ │ ├── CreateTableHandler.ts │ │ │ │ ├── CreateTablesCommand.spec.ts │ │ │ │ ├── CreateTablesCommand.ts │ │ │ │ ├── CreateTablesHandler.spec.ts │ │ │ │ ├── CreateTablesHandler.ts │ │ │ │ ├── DeleteByRangeCommand.spec.ts │ │ │ │ ├── DeleteByRangeCommand.ts │ │ │ │ ├── DeleteByRangeHandler.spec.ts │ │ │ │ ├── DeleteByRangeHandler.ts │ │ │ │ ├── DeleteFieldCommand.spec.ts │ │ │ │ ├── DeleteFieldCommand.ts │ │ │ │ ├── DeleteFieldHandler.spec.ts │ │ │ │ ├── DeleteFieldHandler.ts │ │ │ │ ├── DeleteFieldsCommand.spec.ts │ │ │ │ ├── DeleteFieldsCommand.ts │ │ │ │ ├── DeleteFieldsHandler.spec.ts │ │ │ │ ├── DeleteFieldsHandler.ts │ │ │ │ ├── DeleteRecordsCommand.spec.ts │ │ │ │ ├── DeleteRecordsCommand.ts │ │ │ │ ├── DeleteRecordsHandler.spec.ts │ │ │ │ ├── DeleteRecordsHandler.ts │ │ │ │ ├── DeleteTableCommand.spec.ts │ │ │ │ ├── DeleteTableCommand.ts │ │ │ │ ├── DeleteTableHandler.spec.ts │ │ │ │ ├── DeleteTableHandler.ts │ │ │ │ ├── DuplicateFieldCommand.spec.ts │ │ │ │ ├── DuplicateFieldCommand.ts │ │ │ │ ├── DuplicateFieldHandler.spec.ts │ │ │ │ ├── DuplicateFieldHandler.ts │ │ │ │ ├── DuplicateRecordCommand.spec.ts │ │ │ │ ├── DuplicateRecordCommand.ts │ │ │ │ ├── DuplicateRecordHandler.spec.ts │ │ │ │ ├── DuplicateRecordHandler.ts │ │ │ │ ├── FieldValidation.ts │ │ │ │ ├── IUpdateTableFieldSpec.ts │ │ │ │ ├── ImportCsvCommand.spec.ts │ │ │ │ ├── ImportCsvCommand.ts │ │ │ │ ├── ImportCsvHandler.spec.ts │ │ │ │ ├── ImportCsvHandler.ts │ │ │ │ ├── ImportDotTeaStructureCommand.spec.ts │ │ │ │ ├── ImportDotTeaStructureCommand.ts │ │ │ │ ├── ImportDotTeaStructureHandler.spec.ts │ │ │ │ ├── ImportDotTeaStructureHandler.ts │ │ │ │ ├── ImportRecordsCommand.spec.ts │ │ │ │ ├── ImportRecordsCommand.ts │ │ │ │ ├── ImportRecordsHandler.spec.ts │ │ │ │ ├── ImportRecordsHandler.ts │ │ │ │ ├── InternalCommand.ts │ │ │ │ ├── PasteCommand.spec.ts │ │ │ │ ├── PasteCommand.ts │ │ │ │ ├── PasteHandler.spec.ts │ │ │ │ ├── PasteHandler.ts │ │ │ │ ├── PropagateUserRenameCommand.ts │ │ │ │ ├── PropagateUserRenameHandler.spec.ts │ │ │ │ ├── PropagateUserRenameHandler.ts │ │ │ │ ├── PublicCommand.ts │ │ │ │ ├── PublicCommandBranding.ts │ │ │ │ ├── RangeUtils.spec.ts │ │ │ │ ├── RangeUtils.ts │ │ │ │ ├── RedoCommand.ts │ │ │ │ ├── RedoHandler.ts │ │ │ │ ├── RenameTableCommand.spec.ts │ │ │ │ ├── RenameTableCommand.ts │ │ │ │ ├── RenameTableHandler.spec.ts │ │ │ │ ├── RenameTableHandler.ts │ │ │ │ ├── ReorderRecordsCommand.spec.ts │ │ │ │ ├── ReorderRecordsCommand.ts │ │ │ │ ├── ReorderRecordsHandler.ts │ │ │ │ ├── ReplayFieldTypeConversionCommand.ts │ │ │ │ ├── ReplayFieldTypeConversionHandler.ts │ │ │ │ ├── RestoreRecordsCommand.spec.ts │ │ │ │ ├── RestoreRecordsCommand.ts │ │ │ │ ├── RestoreRecordsHandler.ts │ │ │ │ ├── RestoreTableCommand.ts │ │ │ │ ├── RestoreTableHandler.spec.ts │ │ │ │ ├── RestoreTableHandler.ts │ │ │ │ ├── SubmitRecordCommand.spec.ts │ │ │ │ ├── SubmitRecordCommand.ts │ │ │ │ ├── SubmitRecordHandler.spec.ts │ │ │ │ ├── SubmitRecordHandler.ts │ │ │ │ ├── TableFieldSpecs.spec.ts │ │ │ │ ├── TableFieldSpecs.ts │ │ │ │ ├── TableFieldUpdateSpecs.same-type.spec.ts │ │ │ │ ├── TableFieldUpdateSpecs.spec.ts │ │ │ │ ├── TableFieldUpdateSpecs.ts │ │ │ │ ├── TableInputParser.spec.ts │ │ │ │ ├── TableInputParser.ts │ │ │ │ ├── TableUpdateCommand.ts │ │ │ │ ├── TypeConversionUpdateSpec.ts │ │ │ │ ├── UndoCommand.ts │ │ │ │ ├── UndoHandler.ts │ │ │ │ ├── UpdateFieldCommand.ts │ │ │ │ ├── UpdateFieldHandler.spec.ts │ │ │ │ ├── UpdateFieldHandler.ts │ │ │ │ ├── UpdateRecordCommand.spec.ts │ │ │ │ ├── UpdateRecordCommand.ts │ │ │ │ ├── UpdateRecordHandler.spec.ts │ │ │ │ ├── UpdateRecordHandler.ts │ │ │ │ ├── UpdateRecordsCommand.spec.ts │ │ │ │ ├── UpdateRecordsCommand.ts │ │ │ │ ├── UpdateRecordsHandler.spec.ts │ │ │ │ ├── UpdateRecordsHandler.ts │ │ │ │ ├── fieldOperationPluginRunnerTestUtils.ts │ │ │ │ ├── recordWritePluginRunnerTestUtils.ts │ │ │ │ └── shared/ │ │ │ │ ├── orderBy.spec.ts │ │ │ │ └── orderBy.ts │ │ │ ├── di/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── index.ts │ │ │ │ ├── registerCoreServices.spec.ts │ │ │ │ ├── registerCoreServices.ts │ │ │ │ ├── registerFieldOperationPlugin.spec.ts │ │ │ │ ├── registerFieldOperationPlugin.ts │ │ │ │ ├── registerRecordWritePlugin.spec.ts │ │ │ │ └── registerRecordWritePlugin.ts │ │ │ ├── domain/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── base/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── Base.ts │ │ │ │ │ ├── BaseBuilder.ts │ │ │ │ │ ├── BaseId.ts │ │ │ │ │ ├── BaseName.ts │ │ │ │ │ ├── events/ │ │ │ │ │ │ ├── BaseCreated.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── specs/ │ │ │ │ │ ├── BaseByIdSpec.ts │ │ │ │ │ ├── IBaseSpecVisitor.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── formula/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── CellValueType.ts │ │ │ │ │ ├── FormulaBasics.spec.ts │ │ │ │ │ ├── FormulaFieldReference.ts │ │ │ │ │ ├── function-aliases.ts │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── FormulaFunctions.spec.ts │ │ │ │ │ │ ├── array.ts │ │ │ │ │ │ ├── common.ts │ │ │ │ │ │ ├── date-time.ts │ │ │ │ │ │ ├── factory.ts │ │ │ │ │ │ ├── logical.ts │ │ │ │ │ │ ├── numeric.ts │ │ │ │ │ │ ├── system.ts │ │ │ │ │ │ └── text.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── typed-value-converter.ts │ │ │ │ │ ├── typed-value.ts │ │ │ │ │ └── visitor.ts │ │ │ │ ├── shared/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── ActorId.ts │ │ │ │ │ ├── AggregateRoot.ts │ │ │ │ │ ├── DomainBasics.spec.ts │ │ │ │ │ ├── DomainContext.ts │ │ │ │ │ ├── DomainError.ts │ │ │ │ │ ├── DomainEvent.ts │ │ │ │ │ ├── DomainEventName.ts │ │ │ │ │ ├── Entity.ts │ │ │ │ │ ├── IdGenerator.spec.ts │ │ │ │ │ ├── IdGenerator.ts │ │ │ │ │ ├── OccurredAt.ts │ │ │ │ │ ├── RehydratedValueObject.ts │ │ │ │ │ ├── ValueObject.ts │ │ │ │ │ ├── graph/ │ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ │ ├── topologicalSort.spec.ts │ │ │ │ │ │ └── topologicalSort.ts │ │ │ │ │ ├── pagination/ │ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ │ ├── OffsetPagination.ts │ │ │ │ │ │ ├── PageLimit.ts │ │ │ │ │ │ ├── PageOffset.ts │ │ │ │ │ │ └── Pagination.spec.ts │ │ │ │ │ ├── sort/ │ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ │ ├── Sort.spec.ts │ │ │ │ │ │ ├── Sort.ts │ │ │ │ │ │ └── SortDirection.ts │ │ │ │ │ └── specification/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── AndSpec.ts │ │ │ │ │ ├── ISpecVisitor.ts │ │ │ │ │ ├── ISpecification.ts │ │ │ │ │ ├── MutateOnlySpec.ts │ │ │ │ │ ├── NotSpec.ts │ │ │ │ │ ├── OrSpec.ts │ │ │ │ │ ├── SpecBasics.spec.ts │ │ │ │ │ ├── SpecBuilder.ts │ │ │ │ │ ├── composeAndSpecs.ts │ │ │ │ │ └── visitors/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── AbstractSpecFilterVisitor.ts │ │ │ │ │ ├── ISpecFilterVisitor.ts │ │ │ │ │ └── NoopSpecVisitor.ts │ │ │ │ └── table/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── DbTableName.spec.ts │ │ │ │ ├── DbTableName.ts │ │ │ │ ├── ForeignTable.ts │ │ │ │ ├── IdValueObjects.spec.ts │ │ │ │ ├── NoopVisitors.spec.ts │ │ │ │ ├── OnTeableFieldDeleted.ts │ │ │ │ ├── OnTeableTableDeleted.ts │ │ │ │ ├── Table.createRecordInputSchema.spec.ts │ │ │ │ ├── Table.spec.ts │ │ │ │ ├── Table.ts │ │ │ │ ├── TableBuilder.spec.ts │ │ │ │ ├── TableBuilder.ts │ │ │ │ ├── TableFieldLimit.ts │ │ │ │ ├── TableId.ts │ │ │ │ ├── TableMutator.ts │ │ │ │ ├── TableName.ts │ │ │ │ ├── TableSortKey.spec.ts │ │ │ │ ├── TableSortKey.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── AbstractTableUpdatedEvent.ts │ │ │ │ │ ├── FieldCreated.ts │ │ │ │ │ ├── FieldDeleted.ts │ │ │ │ │ ├── FieldDuplicated.ts │ │ │ │ │ ├── FieldOptionsAdded.ts │ │ │ │ │ ├── FieldUpdated.ts │ │ │ │ │ ├── RecordCreated.ts │ │ │ │ │ ├── RecordFieldValuesDTO.ts │ │ │ │ │ ├── RecordReordered.ts │ │ │ │ │ ├── RecordUpdated.ts │ │ │ │ │ ├── RecordsBatchCreated.ts │ │ │ │ │ ├── RecordsBatchUpdated.ts │ │ │ │ │ ├── RecordsDeleted.ts │ │ │ │ │ ├── TableActionTriggerRequested.ts │ │ │ │ │ ├── TableCreated.ts │ │ │ │ │ ├── TableDeleted.ts │ │ │ │ │ ├── TableRenamed.ts │ │ │ │ │ ├── TableRestored.ts │ │ │ │ │ ├── TableTrashed.ts │ │ │ │ │ └── ViewColumnMetaUpdated.ts │ │ │ │ ├── fields/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── DbFieldName.ts │ │ │ │ │ ├── DbFieldType.ts │ │ │ │ │ ├── Field.ts │ │ │ │ │ ├── FieldBasics.spec.ts │ │ │ │ │ ├── FieldFactory.spec.ts │ │ │ │ │ ├── FieldFactory.ts │ │ │ │ │ ├── FieldId.ts │ │ │ │ │ ├── FieldKeyType.ts │ │ │ │ │ ├── FieldName.ts │ │ │ │ │ ├── FieldType.ts │ │ │ │ │ ├── ForeignTableRelatedField.ts │ │ │ │ │ ├── ForeignTableValidation.spec.ts │ │ │ │ │ ├── OnTeableFieldUpdated.ts │ │ │ │ │ ├── fieldPredicates.ts │ │ │ │ │ ├── filter-sync.spec.ts │ │ │ │ │ ├── filter-sync.ts │ │ │ │ │ ├── selectOptionAutoCreate.spec.ts │ │ │ │ │ ├── specs/ │ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ │ ├── FieldByIdSpec.ts │ │ │ │ │ │ ├── FieldByKeySpec.ts │ │ │ │ │ │ ├── FieldByNameSpec.ts │ │ │ │ │ │ ├── FieldIsAttachmentSpec.ts │ │ │ │ │ │ ├── FieldIsBooleanValueSpec.ts │ │ │ │ │ │ ├── FieldIsButtonSpec.ts │ │ │ │ │ │ ├── FieldIsCheckboxSpec.ts │ │ │ │ │ │ ├── FieldIsComputedSpec.ts │ │ │ │ │ │ ├── FieldIsDateLikeSpec.ts │ │ │ │ │ │ ├── FieldIsDateSpec.ts │ │ │ │ │ │ ├── FieldIsDateTimeValueSpec.ts │ │ │ │ │ │ ├── FieldIsFormulaSpec.ts │ │ │ │ │ │ ├── FieldIsJsonSpec.ts │ │ │ │ │ │ ├── FieldIsLinkSpec.ts │ │ │ │ │ │ ├── FieldIsLongTextSpec.ts │ │ │ │ │ │ ├── FieldIsLookupSpec.ts │ │ │ │ │ │ ├── FieldIsMultipleSelectSpec.ts │ │ │ │ │ │ ├── FieldIsNumberFieldSpec.ts │ │ │ │ │ │ ├── FieldIsNumberLikeSpec.ts │ │ │ │ │ │ ├── FieldIsNumberSpec.ts │ │ │ │ │ │ ├── FieldIsNumberValueSpec.ts │ │ │ │ │ │ ├── FieldIsPrimarySpec.ts │ │ │ │ │ │ ├── FieldIsRatingSpec.ts │ │ │ │ │ │ ├── FieldIsRollupSpec.ts │ │ │ │ │ │ ├── FieldIsSingleSelectSpec.ts │ │ │ │ │ │ ├── FieldIsSingleTextSpec.ts │ │ │ │ │ │ ├── FieldIsStringValueSpec.ts │ │ │ │ │ │ ├── FieldIsUserSpec.ts │ │ │ │ │ │ ├── FieldSpecBuilder.ts │ │ │ │ │ │ └── FieldSpecs.spec.ts │ │ │ │ │ ├── types/ │ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ │ ├── AttachmentField.ts │ │ │ │ │ │ ├── AutoNumberField.ts │ │ │ │ │ │ ├── ButtonField.ts │ │ │ │ │ │ ├── ButtonLabel.ts │ │ │ │ │ │ ├── ButtonMaxCount.ts │ │ │ │ │ │ ├── ButtonResetCount.ts │ │ │ │ │ │ ├── ButtonWorkflow.ts │ │ │ │ │ │ ├── CellValueMultiplicity.ts │ │ │ │ │ │ ├── CellValueType.ts │ │ │ │ │ │ ├── CheckboxDefaultValue.ts │ │ │ │ │ │ ├── CheckboxField.ts │ │ │ │ │ │ ├── ConditionalLookupField.spec.ts │ │ │ │ │ │ ├── ConditionalLookupField.ts │ │ │ │ │ │ ├── ConditionalLookupOptions.ts │ │ │ │ │ │ ├── ConditionalRollupConfig.ts │ │ │ │ │ │ ├── ConditionalRollupField.spec.ts │ │ │ │ │ │ ├── ConditionalRollupField.ts │ │ │ │ │ │ ├── CreatedByField.ts │ │ │ │ │ │ ├── CreatedTimeField.ts │ │ │ │ │ │ ├── DateDefaultValue.ts │ │ │ │ │ │ ├── DateField.ts │ │ │ │ │ │ ├── DateFormat.spec.ts │ │ │ │ │ │ ├── DateFormat.ts │ │ │ │ │ │ ├── DateTimeFormatting.spec.ts │ │ │ │ │ │ ├── DateTimeFormatting.ts │ │ │ │ │ │ ├── FieldColor.ts │ │ │ │ │ │ ├── FieldComputed.ts │ │ │ │ │ │ ├── FieldCondition.ts │ │ │ │ │ │ ├── FieldHasError.ts │ │ │ │ │ │ ├── FieldNotNull.ts │ │ │ │ │ │ ├── FieldTypes.spec.ts │ │ │ │ │ │ ├── FieldUnique.ts │ │ │ │ │ │ ├── FieldValueObjects.spec.ts │ │ │ │ │ │ ├── FormulaExpression.spec.ts │ │ │ │ │ │ ├── FormulaExpression.ts │ │ │ │ │ │ ├── FormulaField.spec.ts │ │ │ │ │ │ ├── FormulaField.ts │ │ │ │ │ │ ├── FormulaMeta.spec.ts │ │ │ │ │ │ ├── FormulaMeta.ts │ │ │ │ │ │ ├── GeneratedColumnMeta.ts │ │ │ │ │ │ ├── LastModifiedByField.ts │ │ │ │ │ │ ├── LastModifiedTimeField.ts │ │ │ │ │ │ ├── LinkField.spec.ts │ │ │ │ │ │ ├── LinkField.ts │ │ │ │ │ │ ├── LinkFieldConfig.spec.ts │ │ │ │ │ │ ├── LinkFieldConfig.ts │ │ │ │ │ │ ├── LinkFieldMeta.ts │ │ │ │ │ │ ├── LinkRelationship.ts │ │ │ │ │ │ ├── LongTextField.ts │ │ │ │ │ │ ├── LongTextShowAs.ts │ │ │ │ │ │ ├── LookupField.spec.ts │ │ │ │ │ │ ├── LookupField.ts │ │ │ │ │ │ ├── LookupOptions.spec.ts │ │ │ │ │ │ ├── LookupOptions.ts │ │ │ │ │ │ ├── MultipleSelectField.ts │ │ │ │ │ │ ├── NumberDefaultValue.ts │ │ │ │ │ │ ├── NumberField.ts │ │ │ │ │ │ ├── NumberFormatting.spec.ts │ │ │ │ │ │ ├── NumberFormatting.ts │ │ │ │ │ │ ├── NumberShowAs.spec.ts │ │ │ │ │ │ ├── NumberShowAs.ts │ │ │ │ │ │ ├── NumericPrecision.spec.ts │ │ │ │ │ │ ├── NumericPrecision.ts │ │ │ │ │ │ ├── RatingColor.ts │ │ │ │ │ │ ├── RatingField.ts │ │ │ │ │ │ ├── RatingIcon.ts │ │ │ │ │ │ ├── RatingMax.ts │ │ │ │ │ │ ├── RollupExpression.ts │ │ │ │ │ │ ├── RollupField.spec.ts │ │ │ │ │ │ ├── RollupField.ts │ │ │ │ │ │ ├── RollupFieldConfig.ts │ │ │ │ │ │ ├── SelectAutoNewOptions.ts │ │ │ │ │ │ ├── SelectDefaultValue.ts │ │ │ │ │ │ ├── SelectFieldOptionWriteConfig.ts │ │ │ │ │ │ ├── SelectOption.ts │ │ │ │ │ │ ├── SelectOptionId.ts │ │ │ │ │ │ ├── SelectOptionName.ts │ │ │ │ │ │ ├── SelectOptions.ts │ │ │ │ │ │ ├── SingleLineTextField.ts │ │ │ │ │ │ ├── SingleLineTextShowAs.spec.ts │ │ │ │ │ │ ├── SingleLineTextShowAs.ts │ │ │ │ │ │ ├── SingleSelectField.ts │ │ │ │ │ │ ├── TextDefaultValue.ts │ │ │ │ │ │ ├── TimeZone.ts │ │ │ │ │ │ ├── UserDefaultValue.ts │ │ │ │ │ │ ├── UserField.ts │ │ │ │ │ │ ├── UserId.ts │ │ │ │ │ │ ├── UserMultiplicity.ts │ │ │ │ │ │ └── UserNotification.ts │ │ │ │ │ └── visitors/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── AbstractFieldVisitor.ts │ │ │ │ │ ├── FieldCellValueSchemaVisitor.spec.ts │ │ │ │ │ ├── FieldCellValueSchemaVisitor.ts │ │ │ │ │ ├── FieldCreationSideEffectVisitor.spec.ts │ │ │ │ │ ├── FieldCreationSideEffectVisitor.ts │ │ │ │ │ ├── FieldDefaultValueVisitor.spec.ts │ │ │ │ │ ├── FieldDefaultValueVisitor.ts │ │ │ │ │ ├── FieldDeletionSideEffectVisitor.spec.ts │ │ │ │ │ ├── FieldDeletionSideEffectVisitor.ts │ │ │ │ │ ├── FieldFormVisibilityVisitor.spec.ts │ │ │ │ │ ├── FieldFormVisibilityVisitor.ts │ │ │ │ │ ├── FieldOptionsDtoVisitor.ts │ │ │ │ │ ├── FieldToSpecVisitor.spec.ts │ │ │ │ │ ├── FieldToSpecVisitor.ts │ │ │ │ │ ├── FieldValueTypeVisitor.spec.ts │ │ │ │ │ ├── FieldValueTypeVisitor.ts │ │ │ │ │ ├── IFieldVisitor.ts │ │ │ │ │ ├── LinkFieldUpdateSideEffectVisitor.spec.ts │ │ │ │ │ ├── LinkFieldUpdateSideEffectVisitor.ts │ │ │ │ │ ├── LinkForeignTableReferenceVisitor.spec.ts │ │ │ │ │ ├── LinkForeignTableReferenceVisitor.ts │ │ │ │ │ ├── NoopFieldVisitor.spec.ts │ │ │ │ │ ├── NoopFieldVisitor.ts │ │ │ │ │ ├── RecordWriteSideEffectVisitor.ts │ │ │ │ │ ├── SetFieldValueSpecFactoryVisitor.spec.ts │ │ │ │ │ ├── SetFieldValueSpecFactoryVisitor.ts │ │ │ │ │ ├── dateValueParser.ts │ │ │ │ │ ├── normalizeCellDisplayValue.spec.ts │ │ │ │ │ └── normalizeCellDisplayValue.ts │ │ │ │ ├── methods/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── getOrderedVisibleFieldIds.ts │ │ │ │ │ ├── records/ │ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ │ ├── calculateBatchSize.ts │ │ │ │ │ │ ├── createRecord.ts │ │ │ │ │ │ ├── createRecords.ts │ │ │ │ │ │ ├── createRecordsStream.ts │ │ │ │ │ │ ├── createRecordsStreamAsync.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── recordBuilders.ts │ │ │ │ │ │ ├── updateRecord.ts │ │ │ │ │ │ └── updateRecordsStream.ts │ │ │ │ │ ├── rename.ts │ │ │ │ │ ├── validateFormSubmission.spec.ts │ │ │ │ │ └── validateFormSubmission.ts │ │ │ │ ├── records/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── RecordCreateResult.ts │ │ │ │ │ ├── RecordId.ts │ │ │ │ │ ├── RecordInsertOrder.ts │ │ │ │ │ ├── RecordMutationSpecBuilder.spec.ts │ │ │ │ │ ├── RecordMutationSpecBuilder.ts │ │ │ │ │ ├── RecordUpdateResult.ts │ │ │ │ │ ├── TableRecord.spec.ts │ │ │ │ │ ├── TableRecord.ts │ │ │ │ │ ├── TableRecordFields.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── RecordInsertOrder.spec.ts │ │ │ │ │ ├── recordToFieldValues.ts │ │ │ │ │ ├── specs/ │ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ │ ├── AttachmentConditionSpec.ts │ │ │ │ │ │ ├── ButtonConditionSpec.ts │ │ │ │ │ │ ├── CheckboxConditionSpec.ts │ │ │ │ │ │ ├── ConditionalLookupConditionSpec.ts │ │ │ │ │ │ ├── ConditionalRollupConditionSpec.ts │ │ │ │ │ │ ├── DateConditionSpec.ts │ │ │ │ │ │ ├── FieldConditionSpecBuilder.ts │ │ │ │ │ │ ├── FormulaConditionSpec.ts │ │ │ │ │ │ ├── ITableRecordConditionSpecVisitor.ts │ │ │ │ │ │ ├── IncomingLinkCandidateSpec.ts │ │ │ │ │ │ ├── IncomingLinkSelectedSpec.ts │ │ │ │ │ │ ├── LinkConditionSpec.ts │ │ │ │ │ │ ├── LongTextConditionSpec.ts │ │ │ │ │ │ ├── MultipleSelectConditionSpec.ts │ │ │ │ │ │ ├── NumberConditionSpec.ts │ │ │ │ │ │ ├── RatingConditionSpec.ts │ │ │ │ │ │ ├── RecordByIdSpec.ts │ │ │ │ │ │ ├── RecordByIdsSpec.ts │ │ │ │ │ │ ├── RecordConditionOperators.ts │ │ │ │ │ │ ├── RecordConditionSpec.ts │ │ │ │ │ │ ├── RecordConditionSpecAccept.spec.ts │ │ │ │ │ │ ├── RecordConditionSpecBuilder.spec.ts │ │ │ │ │ │ ├── RecordConditionSpecBuilder.ts │ │ │ │ │ │ ├── RecordConditionSpecEvaluation.spec.ts │ │ │ │ │ │ ├── RecordConditionSpecFactory.ts │ │ │ │ │ │ ├── RecordConditionSpecs.spec.ts │ │ │ │ │ │ ├── RecordConditionValues.spec.ts │ │ │ │ │ │ ├── RecordConditionValues.ts │ │ │ │ │ │ ├── RollupConditionSpec.ts │ │ │ │ │ │ ├── SingleLineTextConditionSpec.ts │ │ │ │ │ │ ├── SingleSelectConditionSpec.ts │ │ │ │ │ │ ├── UserConditionSpec.ts │ │ │ │ │ │ ├── values/ │ │ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ │ │ ├── ClearFieldValueSpec.ts │ │ │ │ │ │ │ ├── ICellValueSpecVisitor.ts │ │ │ │ │ │ │ ├── NoopCellValueSpec.ts │ │ │ │ │ │ │ ├── SetAttachmentValueSpec.ts │ │ │ │ │ │ │ ├── SetCheckboxValueSpec.ts │ │ │ │ │ │ │ ├── SetDateValueSpec.ts │ │ │ │ │ │ │ ├── SetFieldValueSpecFactory.spec.ts │ │ │ │ │ │ │ ├── SetFieldValueSpecFactory.ts │ │ │ │ │ │ │ ├── SetLinkValueByTitleSpec.ts │ │ │ │ │ │ │ ├── SetLinkValueSpec.ts │ │ │ │ │ │ │ ├── SetLongTextValueSpec.ts │ │ │ │ │ │ │ ├── SetMultipleSelectValueSpec.ts │ │ │ │ │ │ │ ├── SetNumberValueSpec.ts │ │ │ │ │ │ │ ├── SetRatingValueSpec.ts │ │ │ │ │ │ │ ├── SetRowOrderValueSpec.ts │ │ │ │ │ │ │ ├── SetSingleLineTextValueSpec.ts │ │ │ │ │ │ │ ├── SetSingleSelectValueSpec.ts │ │ │ │ │ │ │ ├── SetUserValueByIdentifierSpec.ts │ │ │ │ │ │ │ └── SetUserValueSpec.ts │ │ │ │ │ │ └── visitors/ │ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ │ ├── NoopRecordConditionSpecVisitor.spec.ts │ │ │ │ │ │ └── NoopRecordConditionSpecVisitor.ts │ │ │ │ │ └── values/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── CellValue.spec.ts │ │ │ │ │ └── CellValue.ts │ │ │ │ ├── resolveFormulaFields.spec.ts │ │ │ │ ├── resolveFormulaFields.ts │ │ │ │ ├── specs/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── ITableSpecVisitor.ts │ │ │ │ │ ├── TableAddFieldSpec.ts │ │ │ │ │ ├── TableAddFieldsSpec.ts │ │ │ │ │ ├── TableAddSelectOptionsSpec.ts │ │ │ │ │ ├── TableByBaseIdSpec.ts │ │ │ │ │ ├── TableByIdSpec.ts │ │ │ │ │ ├── TableByIdsSpec.ts │ │ │ │ │ ├── TableByIncomingReferenceToTableSpec.ts │ │ │ │ │ ├── TableByNameLikeSpec.ts │ │ │ │ │ ├── TableByNameSpec.ts │ │ │ │ │ ├── TableDuplicateFieldSpec.ts │ │ │ │ │ ├── TableRemoveFieldSpec.ts │ │ │ │ │ ├── TableRenameSpec.ts │ │ │ │ │ ├── TableSpecBuilder.spec.ts │ │ │ │ │ ├── TableSpecBuilder.ts │ │ │ │ │ ├── TableSpecs.spec.ts │ │ │ │ │ ├── TableUpdateFieldAiConfigSpec.ts │ │ │ │ │ ├── TableUpdateFieldConstraintsSpec.ts │ │ │ │ │ ├── TableUpdateFieldDbFieldNameSpec.ts │ │ │ │ │ ├── TableUpdateFieldDescriptionSpec.ts │ │ │ │ │ ├── TableUpdateFieldHasErrorSpec.ts │ │ │ │ │ ├── TableUpdateFieldNameSpec.ts │ │ │ │ │ ├── TableUpdateFieldTypeSpec.ts │ │ │ │ │ ├── TableUpdateViewColumnMetaSpec.ts │ │ │ │ │ ├── TableUpdateViewQueryDefaultsSpec.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── TableUpdateFieldConstraintsSpec.spec.ts │ │ │ │ │ │ ├── TableUpdateFieldNameAndTypeSpec.spec.ts │ │ │ │ │ │ ├── TableUpdateViewColumnMetaSpec.spec.ts │ │ │ │ │ │ └── TableUpdateViewQueryDefaultsSpec.spec.ts │ │ │ │ │ ├── field-updates/ │ │ │ │ │ │ ├── RemoveSymmetricLinkFieldSpec.ts │ │ │ │ │ │ ├── UpdateButtonColorSpec.ts │ │ │ │ │ │ ├── UpdateButtonLabelSpec.ts │ │ │ │ │ │ ├── UpdateButtonMaxCountSpec.ts │ │ │ │ │ │ ├── UpdateButtonWorkflowSpec.ts │ │ │ │ │ │ ├── UpdateCheckboxDefaultValueSpec.ts │ │ │ │ │ │ ├── UpdateDateDefaultValueSpec.ts │ │ │ │ │ │ ├── UpdateDateFormattingSpec.ts │ │ │ │ │ │ ├── UpdateFormulaExpressionSpec.ts │ │ │ │ │ │ ├── UpdateFormulaFormattingSpec.ts │ │ │ │ │ │ ├── UpdateFormulaShowAsSpec.ts │ │ │ │ │ │ ├── UpdateFormulaTimeZoneSpec.ts │ │ │ │ │ │ ├── UpdateLinkConfigSpec.ts │ │ │ │ │ │ ├── UpdateLinkRelationshipSpec.ts │ │ │ │ │ │ ├── UpdateLongTextDefaultValueSpec.ts │ │ │ │ │ │ ├── UpdateLongTextShowAsSpec.ts │ │ │ │ │ │ ├── UpdateLookupOptionsSpec.ts │ │ │ │ │ │ ├── UpdateMultipleSelectAutoNewOptionsSpec.ts │ │ │ │ │ │ ├── UpdateMultipleSelectDefaultValueSpec.ts │ │ │ │ │ │ ├── UpdateMultipleSelectOptionsSpec.ts │ │ │ │ │ │ ├── UpdateNumberDefaultValueSpec.ts │ │ │ │ │ │ ├── UpdateNumberFormattingSpec.ts │ │ │ │ │ │ ├── UpdateNumberShowAsSpec.ts │ │ │ │ │ │ ├── UpdateRatingColorSpec.ts │ │ │ │ │ │ ├── UpdateRatingIconSpec.ts │ │ │ │ │ │ ├── UpdateRatingMaxSpec.ts │ │ │ │ │ │ ├── UpdateRollupConfigSpec.ts │ │ │ │ │ │ ├── UpdateRollupExpressionSpec.ts │ │ │ │ │ │ ├── UpdateRollupFormattingSpec.ts │ │ │ │ │ │ ├── UpdateRollupShowAsSpec.ts │ │ │ │ │ │ ├── UpdateRollupTimeZoneSpec.ts │ │ │ │ │ │ ├── UpdateSingleLineTextDefaultValueSpec.ts │ │ │ │ │ │ ├── UpdateSingleLineTextShowAsSpec.ts │ │ │ │ │ │ ├── UpdateSingleSelectAutoNewOptionsSpec.ts │ │ │ │ │ │ ├── UpdateSingleSelectDefaultValueSpec.ts │ │ │ │ │ │ ├── UpdateSingleSelectOptionsSpec.ts │ │ │ │ │ │ ├── UpdateUserDefaultValueSpec.ts │ │ │ │ │ │ ├── UpdateUserMultiplicitySpec.ts │ │ │ │ │ │ ├── UpdateUserNotificationSpec.ts │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── UpdateLinkConfigSpec.spec.ts │ │ │ │ │ │ │ ├── UpdateLinkRelationshipSpec.spec.ts │ │ │ │ │ │ │ ├── UpdateMultipleSelectOptionsSpec.spec.ts │ │ │ │ │ │ │ ├── UpdateRollupSpecs.spec.ts │ │ │ │ │ │ │ ├── UpdateSingleLineTextShowAsSpec.spec.ts │ │ │ │ │ │ │ ├── field-update-specs.spec.ts │ │ │ │ │ │ │ └── field-update-value-specs.spec.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── visitors/ │ │ │ │ │ ├── FieldUpdateSemanticsVisitor.ts │ │ │ │ │ ├── TableEventGeneratingSpecVisitor.ts │ │ │ │ │ ├── TableSpecEventVisitor.ts │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── FieldUpdateSemanticsVisitor.spec.ts │ │ │ │ │ ├── TableEventGeneratingSpecVisitor.spec.ts │ │ │ │ │ └── TableSpecEventVisitor.spec.ts │ │ │ │ └── views/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── OnTeableViewFieldDeleted.ts │ │ │ │ ├── View.ts │ │ │ │ ├── ViewBasics.spec.ts │ │ │ │ ├── ViewColumnMeta.ts │ │ │ │ ├── ViewFactory.ts │ │ │ │ ├── ViewFieldDeletion.spec.ts │ │ │ │ ├── ViewId.ts │ │ │ │ ├── ViewName.ts │ │ │ │ ├── ViewQueryDefaults.spec.ts │ │ │ │ ├── ViewQueryDefaults.ts │ │ │ │ ├── ViewType.spec.ts │ │ │ │ ├── ViewType.ts │ │ │ │ ├── types/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── CalendarView.ts │ │ │ │ │ ├── FormView.ts │ │ │ │ │ ├── GalleryView.ts │ │ │ │ │ ├── GridView.ts │ │ │ │ │ ├── KanbanView.ts │ │ │ │ │ └── PluginView.ts │ │ │ │ └── visitors/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── CloneViewVisitor.ts │ │ │ │ ├── IViewVisitor.ts │ │ │ │ └── NoopViewVisitor.ts │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── ports/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── AttachmentLookupService.ts │ │ │ │ ├── BaseRepository.ts │ │ │ │ ├── CommandBus.ts │ │ │ │ ├── CommandBus.typecheck.ts │ │ │ │ ├── ComputedUpdateDrainService.ts │ │ │ │ ├── CsvParser.ts │ │ │ │ ├── DotTeaParser.ts │ │ │ │ ├── EventBus.ts │ │ │ │ ├── EventHandler.ts │ │ │ │ ├── ExecutionContext.ts │ │ │ │ ├── FieldOperationPlugin.ts │ │ │ │ ├── HandlerResolver.ts │ │ │ │ ├── Hasher.ts │ │ │ │ ├── Logger.ts │ │ │ │ ├── QueryBus.ts │ │ │ │ ├── RealtimeChange.ts │ │ │ │ ├── RealtimeDocId.spec.ts │ │ │ │ ├── RealtimeDocId.ts │ │ │ │ ├── RealtimeEngine.ts │ │ │ │ ├── RecordOrderCalculator.ts │ │ │ │ ├── RecordWritePlugin.spec.ts │ │ │ │ ├── RecordWritePlugin.ts │ │ │ │ ├── RepositoryQuery.ts │ │ │ │ ├── TableRecordQueryRepository.ts │ │ │ │ ├── TableRecordReadModel.ts │ │ │ │ ├── TableRecordRepository.ts │ │ │ │ ├── TableRecordStreamPaginationStrategy.ts │ │ │ │ ├── TableRepository.ts │ │ │ │ ├── TableSchemaRepository.ts │ │ │ │ ├── TraceSpan.spec.ts │ │ │ │ ├── TraceSpan.ts │ │ │ │ ├── Tracer.ts │ │ │ │ ├── UndoRedoStore.ts │ │ │ │ ├── UnitOfWork.ts │ │ │ │ ├── UserLookupService.ts │ │ │ │ ├── UserRenamePropagationService.ts │ │ │ │ ├── defaults/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── NoopCsvParser.ts │ │ │ │ │ ├── NoopEventBus.ts │ │ │ │ │ ├── NoopHasher.ts │ │ │ │ │ ├── NoopLogger.ts │ │ │ │ │ ├── NoopPorts.spec.ts │ │ │ │ │ ├── NoopRealtimeEngine.ts │ │ │ │ │ ├── NoopRecordOrderCalculator.ts │ │ │ │ │ ├── NoopTableRecordQueryRepository.ts │ │ │ │ │ ├── NoopTableRecordRepository.ts │ │ │ │ │ ├── NoopTableRepository.ts │ │ │ │ │ ├── NoopTableSchemaRepository.ts │ │ │ │ │ ├── NoopTracer.ts │ │ │ │ │ ├── NoopUndoRedoStore.ts │ │ │ │ │ ├── NoopUnitOfWork.ts │ │ │ │ │ ├── index.spec.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── import/ │ │ │ │ │ ├── IImportSource.ts │ │ │ │ │ ├── IImportSourceAdapter.ts │ │ │ │ │ ├── IImportSourceRegistry.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── mappers/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── TableMapper.ts │ │ │ │ │ └── defaults/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── DefaultTableMapper.spec.ts │ │ │ │ │ ├── DefaultTableMapper.ts │ │ │ │ │ ├── index.spec.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── memory/ │ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ │ ├── AsyncMemoryEventBus.ts │ │ │ │ │ ├── MemoryCommandBus.ts │ │ │ │ │ ├── MemoryEventBus.ts │ │ │ │ │ ├── MemoryPorts.spec.ts │ │ │ │ │ ├── MemoryQueryBus.ts │ │ │ │ │ ├── MemoryTableRepository.ts │ │ │ │ │ ├── MemoryUndoRedoStore.spec.ts │ │ │ │ │ ├── MemoryUndoRedoStore.ts │ │ │ │ │ ├── index.spec.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── tokens.spec.ts │ │ │ │ └── tokens.ts │ │ │ ├── queries/ │ │ │ │ ├── ARCHITECTURE.md │ │ │ │ ├── GetRecordByIdHandler.ts │ │ │ │ ├── GetRecordByIdQuery.ts │ │ │ │ ├── GetTableByIdHandler.spec.ts │ │ │ │ ├── GetTableByIdHandler.ts │ │ │ │ ├── GetTableByIdQuery.spec.ts │ │ │ │ ├── GetTableByIdQuery.ts │ │ │ │ ├── ListBasesHandler.spec.ts │ │ │ │ ├── ListBasesHandler.ts │ │ │ │ ├── ListBasesQuery.ts │ │ │ │ ├── ListTableRecordsHandler.spec.ts │ │ │ │ ├── ListTableRecordsHandler.ts │ │ │ │ ├── ListTableRecordsQuery.spec.ts │ │ │ │ ├── ListTableRecordsQuery.ts │ │ │ │ ├── ListTablesHandler.spec.ts │ │ │ │ ├── ListTablesHandler.ts │ │ │ │ ├── ListTablesQuery.spec.ts │ │ │ │ ├── ListTablesQuery.ts │ │ │ │ ├── QueryHandler.ts │ │ │ │ ├── RecordFilterDto.spec.ts │ │ │ │ ├── RecordFilterDto.ts │ │ │ │ ├── RecordFilterMapper.spec.ts │ │ │ │ ├── RecordFilterMapper.ts │ │ │ │ ├── RecordSearch.spec.ts │ │ │ │ ├── RecordSearch.ts │ │ │ │ └── __tests__/ │ │ │ │ └── GetRecordByIdHandler.spec.ts │ │ │ └── schemas/ │ │ │ ├── field/ │ │ │ │ ├── common.schema.ts │ │ │ │ ├── index.ts │ │ │ │ └── tableField.schema.ts │ │ │ ├── index.ts │ │ │ └── table/ │ │ │ ├── createTable.schema.ts │ │ │ ├── index.ts │ │ │ └── view.schema.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── debug-data/ │ │ ├── .eslintrc.cjs │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── adapters/ │ │ │ │ └── postgres/ │ │ │ │ ├── PostgresDebugMetaStore.ts │ │ │ │ ├── PostgresDebugRecordStore.ts │ │ │ │ └── PostgresFieldRelationGraph.ts │ │ │ ├── di/ │ │ │ │ ├── register.ts │ │ │ │ └── tokens.ts │ │ │ ├── index.ts │ │ │ ├── ports/ │ │ │ │ ├── DebugMetaStore.ts │ │ │ │ ├── DebugRecordStore.ts │ │ │ │ └── FieldRelationGraph.ts │ │ │ ├── service/ │ │ │ │ └── DebugDataService.ts │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── devtools/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── bin/ │ │ │ └── run.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── commands/ │ │ │ │ ├── computed/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── replay.ts │ │ │ │ │ ├── run-task.ts │ │ │ │ │ ├── summary.ts │ │ │ │ │ ├── task.ts │ │ │ │ │ └── tasks.ts │ │ │ │ ├── dottea/ │ │ │ │ │ ├── import.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── explain/ │ │ │ │ │ ├── create-field.ts │ │ │ │ │ ├── create.ts │ │ │ │ │ ├── delete-field.ts │ │ │ │ │ ├── delete-table.ts │ │ │ │ │ ├── delete.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── paste.ts │ │ │ │ │ ├── update-field.ts │ │ │ │ │ └── update.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mock/ │ │ │ │ │ ├── generate.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── records/ │ │ │ │ │ ├── create.ts │ │ │ │ │ ├── delete.ts │ │ │ │ │ ├── get.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ └── update.ts │ │ │ │ ├── relations.ts │ │ │ │ ├── schema/ │ │ │ │ │ ├── field.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── table.ts │ │ │ │ ├── shared.ts │ │ │ │ ├── tables/ │ │ │ │ │ ├── create.ts │ │ │ │ │ ├── describe-schema.ts │ │ │ │ │ └── index.ts │ │ │ │ └── underlying/ │ │ │ │ ├── field.ts │ │ │ │ ├── fields.ts │ │ │ │ ├── index.ts │ │ │ │ ├── record.ts │ │ │ │ ├── records.ts │ │ │ │ ├── table.ts │ │ │ │ └── tables.ts │ │ │ ├── errors/ │ │ │ │ ├── CliError.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── layers/ │ │ │ │ ├── AppLayer.ts │ │ │ │ ├── CommandExplainLive.ts │ │ │ │ ├── ComputedTaskControlLive.ts │ │ │ │ ├── ComputedTaskInspectorLive.ts │ │ │ │ ├── DatabaseLive.ts │ │ │ │ ├── DatabasePgliteLive.ts │ │ │ │ ├── DebugDataLive.ts │ │ │ │ ├── DotTeaImporterLive.ts │ │ │ │ ├── MockRecordsLive.ts │ │ │ │ ├── NodeCryptoHasher.ts │ │ │ │ ├── OutputLive.ts │ │ │ │ ├── RecordMutationLive.ts │ │ │ │ ├── SchemaCheckerLive.ts │ │ │ │ ├── TableCreatorLive.ts │ │ │ │ └── index.ts │ │ │ ├── services/ │ │ │ │ ├── CommandExplain.ts │ │ │ │ ├── ComputedTaskControl.ts │ │ │ │ ├── ComputedTaskInspector.ts │ │ │ │ ├── Database.ts │ │ │ │ ├── DebugData.ts │ │ │ │ ├── DotTeaImporter.ts │ │ │ │ ├── MockRecords.ts │ │ │ │ ├── Output.ts │ │ │ │ ├── RecordMutation.ts │ │ │ │ ├── SchemaChecker.ts │ │ │ │ ├── TableCreator.ts │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ ├── connection.ts │ │ │ ├── csv.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── di/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── dottea/ │ │ ├── .eslintrc.cjs │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── normalizer/ │ │ │ ├── DotTeaFieldNormalizer.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── e2e/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── auto-number.e2e.spec.ts │ │ │ ├── base-duplicate.e2e.spec.ts │ │ │ ├── clear.e2e.spec.ts │ │ │ ├── computed-matrix/ │ │ │ │ ├── chain.matrix.spec.ts │ │ │ │ ├── conditional.matrix.spec.ts │ │ │ │ ├── formula.matrix.spec.ts │ │ │ │ ├── link-ops.matrix.spec.ts │ │ │ │ ├── lookup.matrix.spec.ts │ │ │ │ ├── rollup.matrix.spec.ts │ │ │ │ ├── self-ref.matrix.spec.ts │ │ │ │ └── shared/ │ │ │ │ ├── generators.ts │ │ │ │ ├── index.ts │ │ │ │ ├── setup.ts │ │ │ │ ├── types.ts │ │ │ │ └── validators.ts │ │ │ ├── computed-record-events-realtime.e2e.spec.ts │ │ │ ├── computed.e2e.spec.ts │ │ │ ├── conditional-lookup.e2e.spec.ts │ │ │ ├── conditional-rollup-fast-path.e2e.spec.ts │ │ │ ├── conditional-select-field-reference-operators.e2e.spec.ts │ │ │ ├── conditional-user-field-reference-matrix.e2e.spec.ts │ │ │ ├── conditional-user-field-reference-operators.e2e.spec.ts │ │ │ ├── conditionalFieldDirtyPropagation.e2e.spec.ts │ │ │ ├── conditionalFields.e2e.spec.ts │ │ │ ├── create-field/ │ │ │ │ ├── README.md │ │ │ │ ├── button/ │ │ │ │ │ └── button.spec.ts │ │ │ │ ├── conditionalLookup/ │ │ │ │ │ └── cross-base.spec.ts │ │ │ │ ├── conditionalRollup/ │ │ │ │ │ ├── conditionalRollup.spec.ts │ │ │ │ │ └── cross-base.spec.ts │ │ │ │ ├── formula/ │ │ │ │ │ └── formula.spec.ts │ │ │ │ ├── lookup/ │ │ │ │ │ ├── cross-base.spec.ts │ │ │ │ │ └── lookup.spec.ts │ │ │ │ ├── rollup/ │ │ │ │ │ ├── cross-base.spec.ts │ │ │ │ │ └── rollup.spec.ts │ │ │ │ └── singleLineText/ │ │ │ │ └── singleLineText.spec.ts │ │ │ ├── create-table-field-perf.e2e.spec.ts │ │ │ ├── createField.e2e.spec.ts │ │ │ ├── createRecord.e2e.spec.ts │ │ │ ├── createRecordLink.e2e.spec.ts │ │ │ ├── createRecords.e2e.spec.ts │ │ │ ├── createTable.e2e.spec.ts │ │ │ ├── credit-limit.e2e.spec.ts │ │ │ ├── date-time.e2e.spec.ts │ │ │ ├── deleteByRange.e2e.spec.ts │ │ │ ├── deleteField.e2e.spec.ts │ │ │ ├── deleteRecords-with-conditional-rollup.e2e.spec.ts │ │ │ ├── deleteRecords-with-links.e2e.spec.ts │ │ │ ├── deleteRecords.e2e.spec.ts │ │ │ ├── deleteTable.e2e.spec.ts │ │ │ ├── duplicateField.e2e.spec.ts │ │ │ ├── duplicateRecord.e2e.spec.ts │ │ │ ├── field-condition-isSymbol.e2e.spec.ts │ │ │ ├── field-conversion-deadlock.e2e.spec.ts │ │ │ ├── field-explain.e2e.spec.ts │ │ │ ├── fieldUndoRedo.e2e.spec.ts │ │ │ ├── formula-countall-user-link-lookup.e2e.spec.ts │ │ │ ├── formula-datetime-format.e2e.spec.ts │ │ │ ├── formula-fromnow-tonow.e2e.spec.ts │ │ │ ├── formula-lookup-empty-text-if.e2e.spec.ts │ │ │ ├── formula-workday-diff.e2e.spec.ts │ │ │ ├── formula.e2e.spec.ts │ │ │ ├── getTableById.e2e.spec.ts │ │ │ ├── importCsv.e2e.spec.ts │ │ │ ├── importRecords.e2e.spec.ts │ │ │ ├── index.ts │ │ │ ├── link-advisory-lock.e2e.spec.ts │ │ │ ├── link-exclusivity-constraints.e2e.spec.ts │ │ │ ├── link-formula-lookup-single.e2e.spec.ts │ │ │ ├── link-one-one-duplicate.e2e.spec.ts │ │ │ ├── link-order.e2e.spec.ts │ │ │ ├── link-ordering.e2e.spec.ts │ │ │ ├── link-title-multivalue-lookup.e2e.spec.ts │ │ │ ├── listRecords-unary-filter.e2e.spec.ts │ │ │ ├── listTables.e2e.spec.ts │ │ │ ├── lookup-cross-base.e2e.spec.ts │ │ │ ├── lookup-nested-chain.e2e.spec.ts │ │ │ ├── lookup-no-extra-updates.e2e.spec.ts │ │ │ ├── numeric-coercion.e2e.spec.ts │ │ │ ├── paste.e2e.spec.ts │ │ │ ├── realtimeShareDb.e2e.spec.ts │ │ │ ├── record-constraint-violations.e2e.spec.ts │ │ │ ├── record-create-update-chain.e2e.spec.ts │ │ │ ├── record-cycle-ops.e2e.spec.ts │ │ │ ├── record-field-key.e2e.spec.ts │ │ │ ├── record-filter-null.e2e.spec.ts │ │ │ ├── record-filter-user-field-reference.e2e.spec.ts │ │ │ ├── record-http-compat.e2e.spec.ts │ │ │ ├── record-ordering.e2e.spec.ts │ │ │ ├── renameTable.e2e.spec.ts │ │ │ ├── reorderRecordsUndoRedo.e2e.spec.ts │ │ │ ├── same-table-conditional-delete.e2e.spec.ts │ │ │ ├── shared/ │ │ │ │ ├── globalTestContext.ts │ │ │ │ ├── groupedLinkRangeFixture.ts │ │ │ │ └── vitest.setup.ts │ │ │ ├── undo-redo/ │ │ │ │ ├── fields/ │ │ │ │ │ ├── createField/ │ │ │ │ │ │ ├── fieldTypes.matrix.e2e.spec.ts │ │ │ │ │ │ └── ordering.e2e.spec.ts │ │ │ │ │ ├── deleteField/ │ │ │ │ │ │ ├── fieldTypes.matrix.e2e.spec.ts │ │ │ │ │ │ ├── linkShowByLookup.e2e.spec.ts │ │ │ │ │ │ └── ordering.e2e.spec.ts │ │ │ │ │ ├── duplicateField/ │ │ │ │ │ │ └── fieldTypes.matrix.e2e.spec.ts │ │ │ │ │ ├── shared/ │ │ │ │ │ │ └── fieldUndoRedoMatrixTestKit.ts │ │ │ │ │ └── updateField/ │ │ │ │ │ ├── complexUndoRedo.e2e.spec.ts │ │ │ │ │ └── fieldTypes.matrix.e2e.spec.ts │ │ │ │ ├── records/ │ │ │ │ │ ├── clear/ │ │ │ │ │ │ └── undoRedo.e2e.spec.ts │ │ │ │ │ ├── createRecord/ │ │ │ │ │ │ └── undoRedo.e2e.spec.ts │ │ │ │ │ ├── createRecords/ │ │ │ │ │ │ └── undoRedo.e2e.spec.ts │ │ │ │ │ ├── deleteByRange/ │ │ │ │ │ │ └── undoRedo.e2e.spec.ts │ │ │ │ │ ├── deleteRecords/ │ │ │ │ │ │ └── undoRedo.e2e.spec.ts │ │ │ │ │ ├── duplicateRecord/ │ │ │ │ │ │ └── undoRedo.e2e.spec.ts │ │ │ │ │ ├── paste/ │ │ │ │ │ │ └── undoRedo.e2e.spec.ts │ │ │ │ │ ├── reorderRecords/ │ │ │ │ │ │ └── undoRedo.e2e.spec.ts │ │ │ │ │ └── updateRecord/ │ │ │ │ │ └── undoRedo.e2e.spec.ts │ │ │ │ └── shared/ │ │ │ │ └── undoRedoE2eTestKit.ts │ │ │ ├── undoRedoComplex.e2e.spec.ts │ │ │ ├── update-field/ │ │ │ │ ├── README.md │ │ │ │ ├── attachment/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ │ ├── to-rating.spec.ts │ │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ │ ├── to-singleSelect.spec.ts │ │ │ │ │ │ └── to-user.spec.ts │ │ │ │ │ ├── testUtils.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── checkbox/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-attachment.spec.ts │ │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ │ ├── to-rating.spec.ts │ │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ │ ├── to-singleSelect.spec.ts │ │ │ │ │ │ └── to-user.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── computed/ │ │ │ │ │ ├── ai-trigger-guard.spec.ts │ │ │ │ │ ├── cascade-after-schema-update.spec.ts │ │ │ │ │ ├── conversion.spec.ts │ │ │ │ │ ├── dependency-cascade.spec.ts │ │ │ │ │ ├── force-v2-all-regressions.spec.ts │ │ │ │ │ ├── record-value-seeding.spec.ts │ │ │ │ │ ├── schema-refresh-no-record-events.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── conditionalLookup/ │ │ │ │ │ ├── conversion.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── conditionalRollup/ │ │ │ │ │ ├── aggregation-conversion.spec.ts │ │ │ │ │ ├── circular-dependency.spec.ts │ │ │ │ │ ├── conversion.spec.ts │ │ │ │ │ ├── dependency-error.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── date/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-attachment.spec.ts │ │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ │ ├── to-rating.spec.ts │ │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ │ ├── to-singleSelect.spec.ts │ │ │ │ │ │ └── to-user.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── event-shape.spec.ts │ │ │ │ ├── field-id-stability.spec.ts │ │ │ │ ├── formula/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ │ └── to-singleSelect.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── link/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── cross-base-bulk-to-link.spec.ts │ │ │ │ │ │ ├── general-conversion-cases.spec.ts │ │ │ │ │ │ ├── non-link-to-link.spec.ts │ │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ │ ├── to-manyOne.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ └── to-singleSelect.spec.ts │ │ │ │ │ ├── multi-config-toggle.e2e.spec.ts │ │ │ │ │ ├── update-lookupFieldId.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── longText/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-attachment.spec.ts │ │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ │ ├── to-rating.spec.ts │ │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ │ ├── to-singleSelect.spec.ts │ │ │ │ │ │ └── to-user.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── lookup/ │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── multipleSelect/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-attachment.spec.ts │ │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ │ ├── to-rating.spec.ts │ │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ │ ├── to-singleSelect.spec.ts │ │ │ │ │ │ └── to-user.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── number/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-attachment.spec.ts │ │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ ├── to-rating.spec.ts │ │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ │ ├── to-singleSelect.spec.ts │ │ │ │ │ │ └── to-user.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── primary/ │ │ │ │ │ └── conversion.spec.ts │ │ │ │ ├── rating/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-attachment.spec.ts │ │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ │ ├── to-singleSelect.spec.ts │ │ │ │ │ │ └── to-user.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── rollup/ │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── singleLineText/ │ │ │ │ │ ├── constraint-validation.spec.ts │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-attachment.spec.ts │ │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ │ ├── to-rating.spec.ts │ │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ │ ├── to-singleSelect.spec.ts │ │ │ │ │ │ └── to-user.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── singleSelect/ │ │ │ │ │ ├── conversion/ │ │ │ │ │ │ ├── to-attachment.spec.ts │ │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ │ ├── to-rating.spec.ts │ │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ │ └── to-user.spec.ts │ │ │ │ │ └── update-properties.spec.ts │ │ │ │ ├── type-conversion-record-event-guard.spec.ts │ │ │ │ └── user/ │ │ │ │ ├── conversion/ │ │ │ │ │ ├── to-attachment.spec.ts │ │ │ │ │ ├── to-checkbox.spec.ts │ │ │ │ │ ├── to-date.spec.ts │ │ │ │ │ ├── to-formula.spec.ts │ │ │ │ │ ├── to-link.spec.ts │ │ │ │ │ ├── to-longText.spec.ts │ │ │ │ │ ├── to-lookup.spec.ts │ │ │ │ │ ├── to-multipleSelect.spec.ts │ │ │ │ │ ├── to-number.spec.ts │ │ │ │ │ ├── to-rating.spec.ts │ │ │ │ │ ├── to-rollup.spec.ts │ │ │ │ │ ├── to-singleLineText.spec.ts │ │ │ │ │ ├── to-singleSelect.spec.ts │ │ │ │ │ └── to-user.spec.ts │ │ │ │ └── update-properties.spec.ts │ │ │ ├── updateRecord.e2e.spec.ts │ │ │ ├── updateRecordUndoRedo.e2e.spec.ts │ │ │ ├── updateRecords.e2e.spec.ts │ │ │ └── updateRecordsUndoRedo.e2e.spec.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── field-dependency-core/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── edge-builder.spec.ts │ │ │ ├── edge-builder.ts │ │ │ ├── index.ts │ │ │ ├── parsers.spec.ts │ │ │ ├── parsers.ts │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── formula-sql-pg/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ArrayFunctions.spec.ts │ │ │ ├── BinaryOperators.spec.ts │ │ │ ├── DateAddTimeZone.spec.ts │ │ │ ├── DateFunctions.spec.ts │ │ │ ├── DatetimeDiffParity.spec.ts │ │ │ ├── DatetimeFormatSpecifiers.spec.ts │ │ │ ├── DatetimeParse.pg-integration.spec.ts │ │ │ ├── DirectFieldReferences.spec.ts │ │ │ ├── EdgeCases.spec.ts │ │ │ ├── ErrorHandling.spec.ts │ │ │ ├── FieldFormattingSql.spec.ts │ │ │ ├── FieldFormattingSql.ts │ │ │ ├── FieldSqlCoercionVisitor.ts │ │ │ ├── FormattingMatrix.spec.ts │ │ │ ├── FormulaSqlPgExpressionBuilder.ts │ │ │ ├── FormulaSqlPgFunctions.ts │ │ │ ├── FormulaSqlPgTranslator.ts │ │ │ ├── FormulaSqlPgVisitor.ts │ │ │ ├── FromNowToNow.spec.ts │ │ │ ├── IfBranchNormalization.spec.ts │ │ │ ├── LogicalFunctions.spec.ts │ │ │ ├── LookupArrayNormalization.spec.ts │ │ │ ├── NumericFunctions.spec.ts │ │ │ ├── ParameterlessFunctions.spec.ts │ │ │ ├── PgSqlHelpers.ts │ │ │ ├── PgTypeValidation.pg-integration.spec.ts │ │ │ ├── PgTypeValidation.pg-smoke.spec.ts │ │ │ ├── PgTypeValidationStrategy.ts │ │ │ ├── SqlExpression.ts │ │ │ ├── TextFunctions.spec.ts │ │ │ ├── TimeZonePgMapping.spec.ts │ │ │ ├── TimeZonePgMapping.ts │ │ │ ├── TranslatorEdgeCases.spec.ts │ │ │ ├── TypeConsistency.spec.ts │ │ │ ├── VisitorEdgeCases.spec.ts │ │ │ ├── WeekdayStartDay.spec.ts │ │ │ ├── Workday.spec.ts │ │ │ ├── WorkdayDateNumberField.spec.ts │ │ │ ├── WorkdayDiff.spec.ts │ │ │ ├── __snapshots__/ │ │ │ │ ├── ArrayFunctions.spec.ts.snap │ │ │ │ ├── BinaryOperators.spec.ts.snap │ │ │ │ ├── DateFunctions.spec.ts.snap │ │ │ │ ├── DatetimeFormatSpecifiers.spec.ts.snap │ │ │ │ ├── DirectFieldReferences.spec.ts.snap │ │ │ │ ├── EdgeCases.spec.ts.snap │ │ │ │ ├── ErrorHandling.spec.ts.snap │ │ │ │ ├── IfBranchNormalization.spec.ts.snap │ │ │ │ ├── LogicalFunctions.spec.ts.snap │ │ │ │ ├── NumericFunctions.spec.ts.snap │ │ │ │ ├── ParameterlessFunctions.spec.ts.snap │ │ │ │ └── TextFunctions.spec.ts.snap │ │ │ ├── __tests__/ │ │ │ │ ├── PgSqlHelpers.spec.ts │ │ │ │ ├── datetime-format.util.spec.ts │ │ │ │ └── strategies/ │ │ │ │ └── PgTypeValidationStrategy.spec.ts │ │ │ ├── index.ts │ │ │ ├── strategies/ │ │ │ │ ├── Pg16TypeValidationStrategy.ts │ │ │ │ ├── PgLegacyTypeValidationStrategy.ts │ │ │ │ └── index.ts │ │ │ ├── testkit/ │ │ │ │ ├── FormulaSqlPgTestkit.ts │ │ │ │ └── vitest.setup.ts │ │ │ ├── tokens.ts │ │ │ └── utils/ │ │ │ └── datetime-format.util.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── import/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── adapters/ │ │ │ │ ├── CsvImportAdapter.spec.ts │ │ │ │ ├── CsvImportAdapter.ts │ │ │ │ ├── ExcelImportAdapter.spec.ts │ │ │ │ ├── ExcelImportAdapter.ts │ │ │ │ └── index.ts │ │ │ ├── di/ │ │ │ │ ├── index.ts │ │ │ │ └── registerImportServices.ts │ │ │ ├── index.ts │ │ │ └── ports/ │ │ │ ├── ImportSourceRegistry.spec.ts │ │ │ ├── ImportSourceRegistry.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── mock-records/ │ │ ├── .eslintrc.cjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── MockRecordGenerator.ts │ │ │ ├── TableDependencyAnalyzer.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── visitors/ │ │ │ └── FieldMockValueVisitor.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── postgres-schema/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── v1/ │ │ │ └── types.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── table-templates/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── ARCHITECTURE.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── templates/ │ │ │ │ ├── all-base-fields.ts │ │ │ │ ├── all-field-types.ts │ │ │ │ ├── bug-triage.ts │ │ │ │ ├── content-calendar.ts │ │ │ │ ├── crm.ts │ │ │ │ ├── hr-management.ts │ │ │ │ ├── index.ts │ │ │ │ ├── personal-finance.ts │ │ │ │ ├── project-tracker.ts │ │ │ │ ├── simple.ts │ │ │ │ └── todo.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── test-node/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── commands/ │ │ │ │ ├── CreateFieldHandler.db.spec.ts │ │ │ │ ├── CreateFieldHandler.spec.ts │ │ │ │ ├── CreateRecordHandler.db.spec.ts │ │ │ │ ├── CreateRecordsHandler.db.spec.ts │ │ │ │ ├── CreateRecordsStream.bench.spec.ts │ │ │ │ ├── CreateTableCommand.spec.ts │ │ │ │ ├── CreateTableHandler.db.spec.ts │ │ │ │ ├── CreateTableHandler.spec.ts │ │ │ │ ├── DeleteFieldHandler.spec.ts │ │ │ │ ├── DuplicateFieldHandler.db.spec.ts │ │ │ │ ├── RenameTableHandler.spec.ts │ │ │ │ ├── UpdateRecordHandler.db.spec.ts │ │ │ │ └── UpdateRecordUndoRedo.db.spec.ts │ │ │ ├── computed/ │ │ │ │ ├── ComputedFieldVersionIncrement.db.spec.ts │ │ │ │ ├── ComputedFormulaTypeCompatibility.db.spec.ts │ │ │ │ ├── ComputedOptimization.e2e.spec.ts │ │ │ │ ├── ComputedUpdatePlanner.db.spec.ts │ │ │ │ ├── FieldDependencyChain.integration.spec.ts │ │ │ │ └── FieldDependencyGraph.db.spec.ts │ │ │ ├── index.ts │ │ │ ├── queries/ │ │ │ │ ├── GetTableByIdHandler.spec.ts │ │ │ │ ├── GetTableByIdQuery.spec.ts │ │ │ │ └── ListTablesHandler.spec.ts │ │ │ ├── testkit/ │ │ │ │ ├── createV2NodeTestContainer.ts │ │ │ │ └── v2NodeTestContainer.ts │ │ │ └── undo-redo/ │ │ │ ├── fields/ │ │ │ │ ├── createField/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── createFields/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── deleteField/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── deleteFields/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── duplicateField/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ └── updateField/ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ ├── records/ │ │ │ │ ├── clear/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── createRecord/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── createRecords/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── deleteByRange/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── deleteRecords/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── duplicateRecord/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── paste/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ ├── reorderRecords/ │ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ │ └── updateRecord/ │ │ │ │ └── undoRedo.db.spec.ts │ │ │ └── shared/ │ │ │ └── undoRedoDbTestKit.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.eslint.json │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ ├── vitest.config.ts │ │ └── vitest.setup.ts │ ├── tsdown-config/ │ │ ├── package.json │ │ └── src/ │ │ ├── index.cjs │ │ ├── index.d.ts │ │ └── index.js │ └── utils/ │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── ARCHITECTURE.md │ ├── package.json │ ├── src/ │ │ ├── index.ts │ │ ├── printTable.spec.ts │ │ └── printTable.ts │ ├── tsconfig.build.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsdown.config.ts │ └── vitest.config.ts ├── plugins/ │ ├── .eslintrc.js │ ├── .gitignore │ ├── .idea/ │ │ ├── modules.xml │ │ └── plugins.iml │ ├── LICENSE │ ├── README.md │ ├── next.config.mjs │ ├── package.json │ ├── postcss.config.js │ ├── scripts/ │ │ └── build-replace.js │ ├── src/ │ │ ├── app/ │ │ │ └── sheet-form-view/ │ │ │ ├── components/ │ │ │ │ ├── CopyButton.tsx │ │ │ │ ├── Pages.tsx │ │ │ │ ├── SharePopover.tsx │ │ │ │ ├── SheetShareView.tsx │ │ │ │ ├── SheetView.tsx │ │ │ │ ├── sheet/ │ │ │ │ │ ├── DesignPanel.tsx │ │ │ │ │ ├── PreviewPanel.tsx │ │ │ │ │ ├── SheetSkeleton.tsx │ │ │ │ │ ├── UniverSheet.tsx │ │ │ │ │ ├── constant.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── theme.ts │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── components/ │ │ │ ├── EnvProvider.tsx │ │ │ ├── I18nProvider.tsx │ │ │ ├── QueryClientProvider.tsx │ │ │ ├── get-query-client.ts │ │ │ └── types.ts │ │ ├── hooks/ │ │ │ ├── useEnv.ts │ │ │ └── useInitializationZodI18n.ts │ │ ├── locales/ │ │ │ └── sheet-form-view/ │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ ├── it.json │ │ │ └── zh.json │ │ ├── types.d/ │ │ │ ├── assets.d.ts │ │ │ └── i18next.d.ts │ │ └── types.ts │ ├── tailwind.config.ts │ └── tsconfig.json ├── pnpm-workspace.yaml ├── renovate.json5 ├── scripts/ │ ├── build-image.mjs │ ├── build-yaml-doc.sh │ ├── db-migrate.mjs │ ├── entrypoint/ │ │ └── docker-entrypoint.sh │ ├── generate-openapi-types.mjs │ ├── post-build-cleanup.mjs │ ├── publish.mjs │ ├── start.sh │ ├── upload-assets.mjs │ └── wait-for └── tsconfig.base.json