@casekit/orm 0.0.1-alpha.11 → 0.0.1-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/lib/queries/find/types/FindManyResult.d.ts +2 -1
  2. package/lib/queries/find/types/FindManyResult.d.ts.map +1 -1
  3. package/package.json +13 -3
  4. package/.env +0 -2
  5. package/.eslintrc.cjs +0 -69
  6. package/.github/actions/ci-setup/action.yml +0 -19
  7. package/.github/dependabot.yml +0 -12
  8. package/.github/workflows/ci.yml +0 -119
  9. package/.github/workflows/dependabot.yml +0 -26
  10. package/.github/workflows/semgrep.yml +0 -24
  11. package/.prettierrc.cjs +0 -11
  12. package/.vscode/tasks.json +0 -28
  13. package/codecov.yml +0 -7
  14. package/lib/orm.query.test.d.ts +0 -2
  15. package/lib/orm.query.test.d.ts.map +0 -1
  16. package/lib/orm.query.test.js +0 -22
  17. package/lib/orm.query.test.js.map +0 -1
  18. package/src/Connection.ts +0 -65
  19. package/src/errors.ts +0 -18
  20. package/src/index.ts +0 -16
  21. package/src/logger.ts +0 -3
  22. package/src/migrate/commands/implode.ts +0 -46
  23. package/src/migrate/index.ts +0 -1
  24. package/src/migrate/migrator.ts +0 -24
  25. package/src/migrate/sql/createExtensionsSql.test.ts +0 -26
  26. package/src/migrate/sql/createExtensionsSql.ts +0 -16
  27. package/src/migrate/sql/createForeignKeyConstraintSql.test.ts +0 -50
  28. package/src/migrate/sql/createForeignKeyConstraintSql.ts +0 -44
  29. package/src/migrate/sql/createSchemasSql.test.ts +0 -81
  30. package/src/migrate/sql/createSchemasSql.ts +0 -15
  31. package/src/migrate/sql/createTableSql.properties.ts +0 -38
  32. package/src/migrate/sql/createTableSql.test.ts +0 -74
  33. package/src/migrate/sql/createTableSql.ts +0 -53
  34. package/src/migrate/sql/createUniqueConstraintSql.ts +0 -27
  35. package/src/migrate/sql/dropSchemasSql.ts +0 -15
  36. package/src/migrate/sql/dropTableSql.ts +0 -13
  37. package/src/orm.query.test.ts +0 -28
  38. package/src/orm.ts +0 -370
  39. package/src/pull/index.ts +0 -1
  40. package/src/pull/introspect/getForeignKeys.ts +0 -64
  41. package/src/pull/introspect/getPrimaryKeys.ts +0 -26
  42. package/src/pull/introspect/getTables.ts +0 -51
  43. package/src/pull/introspect/getUniqueConstraints.ts +0 -39
  44. package/src/pull/parse/parseCreateUniqueIndexStatement.test.ts +0 -14
  45. package/src/pull/parse/parseCreateUniqueIndexStatement.ts +0 -19
  46. package/src/pull/pull.ts +0 -78
  47. package/src/pull/render/renderModel.test.ts +0 -144
  48. package/src/pull/render/renderModel.ts +0 -141
  49. package/src/pull/render/renderModelsIndex.ts +0 -24
  50. package/src/pull/render/renderRelations.ts +0 -77
  51. package/src/pull/render/renderRelationsIndex.ts +0 -24
  52. package/src/pull/types/ColumnMeta.ts +0 -10
  53. package/src/pull/types/ForeignKey.ts +0 -6
  54. package/src/pull/types/PrimaryKey.ts +0 -6
  55. package/src/pull/types/UniqueConstraint.ts +0 -8
  56. package/src/pull/util/format.ts +0 -17
  57. package/src/pull/util/quote.ts +0 -7
  58. package/src/pull/util/unquote.ts +0 -9
  59. package/src/queries/clauses/IncludeClause.ts +0 -39
  60. package/src/queries/clauses/LateralByClause.ts +0 -4
  61. package/src/queries/clauses/ReturningClause.ts +0 -7
  62. package/src/queries/clauses/SelectClause.ts +0 -7
  63. package/src/queries/clauses/WhereClause.ts +0 -16
  64. package/src/queries/clauses/helpers/OptionalColumn.ts +0 -18
  65. package/src/queries/clauses/helpers/OptionalParams.ts +0 -14
  66. package/src/queries/clauses/helpers/RequiredColumn.ts +0 -8
  67. package/src/queries/clauses/helpers/RequiredParams.ts +0 -14
  68. package/src/queries/clauses/include/IncludedRelationModel.ts +0 -13
  69. package/src/queries/clauses/include/IncludedRelationName.ts +0 -11
  70. package/src/queries/clauses/include/IncludedRelationQuery.ts +0 -20
  71. package/src/queries/clauses/where/buildWhereClause.ts +0 -121
  72. package/src/queries/clauses/where/buildWhereClauses.test.ts +0 -145
  73. package/src/queries/clauses/where/buildWhereClauses.ts +0 -45
  74. package/src/queries/clauses/where/operators.ts +0 -13
  75. package/src/queries/clauses/where/types/WhereClauseValue.ts +0 -39
  76. package/src/queries/count/buildCount.ts +0 -77
  77. package/src/queries/count/countToSql.ts +0 -66
  78. package/src/queries/count/tests/count.test.ts +0 -35
  79. package/src/queries/count/types/BaseCountParams.ts +0 -11
  80. package/src/queries/count/types/CountBuilder.ts +0 -45
  81. package/src/queries/count/types/CountParams.ts +0 -27
  82. package/src/queries/count.ts +0 -33
  83. package/src/queries/create/buildCreate.ts +0 -67
  84. package/src/queries/create/createResultSchema.ts +0 -24
  85. package/src/queries/create/createToSql.ts +0 -44
  86. package/src/queries/create/tests/createMany.varied-keys.test.ts +0 -28
  87. package/src/queries/create/tests/createOne.test-d.ts +0 -116
  88. package/src/queries/create/tests/createOne.test.ts +0 -197
  89. package/src/queries/create/types/BaseCreateManyParams.ts +0 -7
  90. package/src/queries/create/types/BaseCreateOneParams.ts +0 -7
  91. package/src/queries/create/types/CreateManyParams.ts +0 -15
  92. package/src/queries/create/types/CreateManyResult.ts +0 -17
  93. package/src/queries/create/types/CreateOneParams.ts +0 -22
  94. package/src/queries/create/types/CreateOneResult.ts +0 -17
  95. package/src/queries/createMany.ts +0 -38
  96. package/src/queries/createOne.ts +0 -27
  97. package/src/queries/delete/buildDelete.ts +0 -56
  98. package/src/queries/delete/deleteResultSchema.ts +0 -23
  99. package/src/queries/delete/deleteToSql.ts +0 -48
  100. package/src/queries/delete/tests/deleteOne.test.ts +0 -108
  101. package/src/queries/delete/types/BaseDeleteParams.ts +0 -9
  102. package/src/queries/delete/types/DeleteManyResult.ts +0 -16
  103. package/src/queries/delete/types/DeleteOneResult.ts +0 -16
  104. package/src/queries/delete/types/DeleteParams.ts +0 -12
  105. package/src/queries/deleteMany.ts +0 -33
  106. package/src/queries/deleteOne.ts +0 -32
  107. package/src/queries/find/buildFind.ts +0 -138
  108. package/src/queries/find/findResultSchema.ts +0 -32
  109. package/src/queries/find/findToSql.test.ts +0 -123
  110. package/src/queries/find/findToSql.ts +0 -141
  111. package/src/queries/find/getIncludedManyToManyRelations.ts +0 -49
  112. package/src/queries/find/getIncludedOneToManyRelations.ts +0 -44
  113. package/src/queries/find/tests/findMany.include.test.ts +0 -107
  114. package/src/queries/find/tests/findMany.limit.test-d.ts +0 -75
  115. package/src/queries/find/tests/findMany.limit.test.ts +0 -176
  116. package/src/queries/find/tests/findMany.nullable-relations.test.ts +0 -127
  117. package/src/queries/find/tests/findMany.orderBy.test-d.ts +0 -84
  118. package/src/queries/find/tests/findMany.orderBy.test.ts +0 -184
  119. package/src/queries/find/tests/findMany.select.test-d.ts +0 -117
  120. package/src/queries/find/tests/findMany.select.test.ts +0 -188
  121. package/src/queries/find/tests/findMany.too-deep.test-d.ts +0 -154
  122. package/src/queries/find/tests/findMany.where.test-d.ts +0 -85
  123. package/src/queries/find/tests/findMany.where.test.ts +0 -76
  124. package/src/queries/find/tests/middleware.find.where.test.ts +0 -467
  125. package/src/queries/find/types/BaseFindParams.ts +0 -18
  126. package/src/queries/find/types/FindBuilder.ts +0 -73
  127. package/src/queries/find/types/FindManyParams.ts +0 -24
  128. package/src/queries/find/types/FindManyResult.ts +0 -12
  129. package/src/queries/find/types/FindOneParams.ts +0 -17
  130. package/src/queries/find/types/FindOneResult.ts +0 -50
  131. package/src/queries/findMany.ts +0 -134
  132. package/src/queries/findOne.ts +0 -30
  133. package/src/queries/middleware/Middleware.ts +0 -53
  134. package/src/queries/middleware/ValuesMiddleware.ts +0 -9
  135. package/src/queries/middleware/WhereMiddleware.ts +0 -16
  136. package/src/queries/update/buildUpdate.ts +0 -76
  137. package/src/queries/update/tests/updateOne.test.ts +0 -118
  138. package/src/queries/update/types/BaseUpdateParams.ts +0 -10
  139. package/src/queries/update/types/UpdateManyResult.ts +0 -16
  140. package/src/queries/update/types/UpdateOneResult.ts +0 -16
  141. package/src/queries/update/types/UpdateParams.ts +0 -14
  142. package/src/queries/update/types/UpdateValues.ts +0 -12
  143. package/src/queries/update/updateResultSchema.ts +0 -23
  144. package/src/queries/update/updateToSql.ts +0 -43
  145. package/src/queries/updateMany.ts +0 -33
  146. package/src/queries/updateOne.ts +0 -33
  147. package/src/queries/util/hasConditions.test.ts +0 -36
  148. package/src/queries/util/hasConditions.ts +0 -14
  149. package/src/queries/util/rowToObject.test.ts +0 -76
  150. package/src/queries/util/rowToObject.ts +0 -13
  151. package/src/queries/util/tableAlias.test.ts +0 -20
  152. package/src/queries/util/tableAlias.ts +0 -10
  153. package/src/schema/populate/composeMiddleware.ts +0 -51
  154. package/src/schema/populate/populateConfiguration.ts +0 -48
  155. package/src/schema/populate/populateModel.ts +0 -98
  156. package/src/schema/populate/suggestedColumnSchema.ts +0 -62
  157. package/src/schema/types/base/BaseColumn.ts +0 -10
  158. package/src/schema/types/base/BaseConfiguration.ts +0 -14
  159. package/src/schema/types/base/BaseModel.ts +0 -12
  160. package/src/schema/types/base/BaseModels.ts +0 -3
  161. package/src/schema/types/base/BaseOrm.ts +0 -8
  162. package/src/schema/types/base/BaseRelation.ts +0 -19
  163. package/src/schema/types/base/BaseRelations.ts +0 -3
  164. package/src/schema/types/constraints/ForeignKey.ts +0 -13
  165. package/src/schema/types/constraints/UniqueConstraint.ts +0 -9
  166. package/src/schema/types/helpers/ColumnName.ts +0 -6
  167. package/src/schema/types/helpers/ColumnType.ts +0 -23
  168. package/src/schema/types/helpers/Columns.ts +0 -3
  169. package/src/schema/types/helpers/HasDefault.ts +0 -11
  170. package/src/schema/types/helpers/IsNullable.ts +0 -7
  171. package/src/schema/types/helpers/IsProvided.ts +0 -8
  172. package/src/schema/types/helpers/IsSerial.ts +0 -10
  173. package/src/schema/types/helpers/ModelName.ts +0 -6
  174. package/src/schema/types/loose/LooseColumnDefinition.ts +0 -80
  175. package/src/schema/types/loose/LooseModelDefinition.ts +0 -47
  176. package/src/schema/types/loose/LooseModelDefinitions.ts +0 -3
  177. package/src/schema/types/loose/LooseRelationDefinition.ts +0 -10
  178. package/src/schema/types/loose/LooseRelationsDefinition.ts +0 -8
  179. package/src/schema/types/loose/LooseRelationsDefinitions.ts +0 -7
  180. package/src/schema/types/postgres/DataType.ts +0 -65
  181. package/src/schema/types/relations/ManyToManyRelation.ts +0 -15
  182. package/src/schema/types/relations/ManyToOneRelation.ts +0 -14
  183. package/src/schema/types/relations/OneToManyRelation.ts +0 -12
  184. package/src/schema/types/strict/ColumnDefinition.ts +0 -81
  185. package/src/schema/types/strict/ModelDefinition.ts +0 -47
  186. package/src/schema/types/strict/ModelDefinitions.ts +0 -3
  187. package/src/schema/types/strict/RelationDefinition.ts +0 -13
  188. package/src/schema/types/strict/RelationsDefinition.ts +0 -8
  189. package/src/schema/types/strict/RelationsDefinitions.ts +0 -7
  190. package/src/schema/validate/validateConfiguration.ts +0 -9
  191. package/src/schema/validate/validateModel.ts +0 -32
  192. package/src/sql/SQLStatement.test.ts +0 -112
  193. package/src/sql/SQLStatement.ts +0 -86
  194. package/src/sql/index.ts +0 -2
  195. package/src/sql/sql.ts +0 -47
  196. package/src/test/db/index.ts +0 -27
  197. package/src/test/db/models/foo.model.ts +0 -24
  198. package/src/test/db/models/foo.relations.ts +0 -4
  199. package/src/test/db/models/post.model.ts +0 -34
  200. package/src/test/db/models/post.relations.ts +0 -21
  201. package/src/test/db/models/tenant.model.ts +0 -14
  202. package/src/test/db/models/tenant.relations.ts +0 -22
  203. package/src/test/db/models/tenantUser.model.ts +0 -23
  204. package/src/test/db/models/tenantUser.relations.ts +0 -15
  205. package/src/test/db/models/user.model.ts +0 -29
  206. package/src/test/db/models/user.relations.ts +0 -38
  207. package/src/test/db/models.ts +0 -15
  208. package/src/test/db/relations.ts +0 -13
  209. package/src/test/gen/column.ts +0 -39
  210. package/src/test/gen/index.ts +0 -2
  211. package/src/test/gen/model.ts +0 -58
  212. package/src/test/gen/sqldate.ts +0 -8
  213. package/src/test/globalSetup.ts +0 -6
  214. package/src/test/seed/index.ts +0 -75
  215. package/src/test/util/withRollback.ts +0 -18
  216. package/src/test/util/withTransaction.ts +0 -19
  217. package/src/types/ColumnName.ts +0 -6
  218. package/src/types/ColumnType.ts +0 -20
  219. package/src/types/Configuration.ts +0 -21
  220. package/src/types/ModelType.ts +0 -20
  221. package/src/types/util/DeepRequired.ts +0 -7
  222. package/src/types/util/DisallowExtraKeys.ts +0 -5
  223. package/src/types/util/NonEmptyArray.ts +0 -1
  224. package/src/types/util/Simplify.ts +0 -8
  225. package/src/util/ensureArray.ts +0 -4
  226. package/src/util/interleave.test.ts +0 -35
  227. package/src/util/interleave.ts +0 -8
  228. package/tsconfig.json +0 -18
  229. package/vitest.config.ts +0 -15
@@ -1,7 +1,8 @@
1
1
  import { ModelName } from "../../../schema/types/helpers/ModelName";
2
2
  import { LooseModelDefinitions } from "../../../schema/types/loose/LooseModelDefinitions";
3
3
  import { LooseRelationsDefinitions } from "../../../schema/types/loose/LooseRelationsDefinitions";
4
+ import { Simplify } from "../../../types/util/Simplify";
4
5
  import { FindManyParams } from "./FindManyParams";
5
6
  import { FindOneResult } from "./FindOneResult";
6
- export type FindManyResult<Models extends LooseModelDefinitions, Relations extends LooseRelationsDefinitions<Models>, M extends ModelName<Models>, Q extends FindManyParams<Models, Relations, M>> = FindOneResult<Models, Relations, M, Q>[];
7
+ export type FindManyResult<Models extends LooseModelDefinitions, Relations extends LooseRelationsDefinitions<Models>, M extends ModelName<Models>, Q extends FindManyParams<Models, Relations, M>> = Simplify<FindOneResult<Models, Relations, M, Q>[]>;
7
8
  //# sourceMappingURL=FindManyResult.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FindManyResult.d.ts","sourceRoot":"","sources":["../../../../src/queries/find/types/FindManyResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,cAAc,CACtB,MAAM,SAAS,qBAAqB,EACpC,SAAS,SAAS,yBAAyB,CAAC,MAAM,CAAC,EACnD,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAC3B,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IAC9C,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"FindManyResult.d.ts","sourceRoot":"","sources":["../../../../src/queries/find/types/FindManyResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,cAAc,CACtB,MAAM,SAAS,qBAAqB,EACpC,SAAS,SAAS,yBAAyB,CAAC,MAAM,CAAC,EACnD,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAC3B,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IAC9C,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,20 @@
1
1
  {
2
2
  "name": "@casekit/orm",
3
- "version": "0.0.1-alpha.11",
3
+ "version": "0.0.1-alpha.13",
4
4
  "description": "A simple ORM",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
7
- "types": "lib/index.d.js",
7
+ "types": "lib/index.d.ts",
8
+ "exports": {
9
+ ".": "./lib/index.js"
10
+ },
11
+ "files": [
12
+ "./lib/*",
13
+ "!./lib/**.test.js",
14
+ "!./lib/**.test.js.map",
15
+ "!./lib/**.test.d.ts",
16
+ "!./lib/**.test.d.ts.map"
17
+ ],
8
18
  "keywords": [],
9
19
  "author": "",
10
20
  "license": "ISC",
@@ -37,7 +47,7 @@
37
47
  "object-hash": "^3.0.0",
38
48
  "pg": "^8.11.5",
39
49
  "pg-format": "^1.0.4",
40
- "pino": "^8.20.0",
50
+ "pino": "^9.0.0",
41
51
  "pluralize": "^8.0.0",
42
52
  "prettier": "^3.2.5",
43
53
  "ts-toolbelt": "^9.6.0",
package/.env DELETED
@@ -1,2 +0,0 @@
1
- PGDATABASE=orm
2
- PGPASSWORD=password
package/.eslintrc.cjs DELETED
@@ -1,69 +0,0 @@
1
- /** @type {import('eslint').Linter.Config} */
2
- module.exports = {
3
- root: true,
4
- parserOptions: {
5
- ecmaVersion: "latest",
6
- sourceType: "module",
7
- ecmaFeatures: {
8
- jsx: true,
9
- },
10
- },
11
- env: {
12
- browser: true,
13
- commonjs: true,
14
- es6: true,
15
- },
16
-
17
- // Base config
18
- extends: ["eslint:recommended"],
19
-
20
- ignorePatterns: ["vitest.config.ts"],
21
-
22
- overrides: [
23
- // Typescript
24
- {
25
- files: ["**/*.{ts,tsx}"],
26
- plugins: ["@typescript-eslint", "import"],
27
- parser: "@typescript-eslint/parser",
28
- parserOptions: {
29
- project: "./tsconfig.json",
30
- tsconfigRootDir: "./",
31
- },
32
- settings: {
33
- "import/internal-regex": "^~/",
34
- "import/resolver": {
35
- node: {
36
- extensions: [".ts", ".tsx"],
37
- },
38
- typescript: {
39
- alwaysTryTypes: true,
40
- },
41
- },
42
- },
43
- extends: [
44
- "plugin:@typescript-eslint/recommended",
45
- "plugin:import/recommended",
46
- "plugin:import/typescript",
47
- ],
48
- rules: {
49
- "@typescript-eslint/no-unused-vars": [
50
- "error",
51
- {
52
- argsIgnorePattern: "^_",
53
- varsIgnorePattern: "^_",
54
- caughtErrorsIgnorePattern: "^_",
55
- },
56
- ],
57
- "@typescript-eslint/no-floating-promises": "error",
58
- },
59
- },
60
-
61
- // Node
62
- {
63
- files: [".eslintrc.cjs"],
64
- env: {
65
- node: true,
66
- },
67
- },
68
- ],
69
- };
@@ -1,19 +0,0 @@
1
- name: CI setup
2
- runs:
3
- using: composite
4
- steps:
5
- - uses: pnpm/action-setup@v3
6
- name: Install pnpm
7
- with:
8
- version: 8
9
- run_install: false
10
-
11
- - uses: actions/setup-node@v4
12
- with:
13
- node-version: 21
14
- cache: pnpm
15
- registry-url: "https://registry.npmjs.org"
16
-
17
- - name: Install dependencies
18
- run: pnpm install
19
- shell: bash
@@ -1,12 +0,0 @@
1
- version: 2
2
- updates:
3
- - package-ecosystem: "npm"
4
- directory: "/"
5
- open-pull-requests-limit: 25
6
- schedule:
7
- interval: "daily"
8
- - package-ecosystem: "github-actions"
9
- directory: "/"
10
- open-pull-requests-limit: 25
11
- schedule:
12
- interval: "daily"
@@ -1,119 +0,0 @@
1
- name: CI
2
- on:
3
- push:
4
- branches: [main]
5
- pull_request:
6
- branches: [main]
7
- permissions:
8
- contents: write
9
-
10
- jobs:
11
- test:
12
- name: "🧪 Run tests"
13
- timeout-minutes: 10
14
- runs-on: ubuntu-latest
15
- env:
16
- PGUSER: casekit
17
- PGPASSWORD: password
18
- PGDATABASE: orm
19
- services:
20
- postgres:
21
- image: postgres
22
- env:
23
- POSTGRES_USER: ${{ env.PGUSER }}
24
- POSTGRES_PASSWORD: ${{ env.PGPASSWORD }}
25
- POSTGRES_DB: ${{ env.PGDATABASE }}
26
- options: >-
27
- --health-cmd pg_isready
28
- --health-interval 10s
29
- --health-timeout 5s
30
- --health-retries 5
31
- ports:
32
- - 5432:5432
33
- steps:
34
- - uses: actions/checkout@v4
35
- - uses: ./.github/actions/ci-setup
36
-
37
- - name: Run tests
38
- run: pnpm test:coverage
39
-
40
- - name: Upload coverage reports to Codecov
41
- uses: codecov/codecov-action@v4.3.0
42
- if: ${{ github.actor != 'dependabot[bot]' }}
43
- with:
44
- token: ${{ secrets.CODECOV_TOKEN }}
45
- slug: casekit/orm
46
-
47
- typecheck:
48
- name: "📐 Typecheck"
49
- timeout-minutes: 10
50
- runs-on: ubuntu-latest
51
- steps:
52
- - uses: actions/checkout@v4
53
- - uses: ./.github/actions/ci-setup
54
- - name: Typecheck
55
- run: pnpm typecheck
56
-
57
- lint:
58
- name: "🧹 Run eslint"
59
- timeout-minutes: 10
60
- runs-on: ubuntu-latest
61
- steps:
62
- - uses: actions/checkout@v4
63
- - uses: ./.github/actions/ci-setup
64
- - name: Lint
65
- run: pnpm lint
66
-
67
- prettier:
68
- name: "💅 Run prettier"
69
- timeout-minutes: 10
70
- runs-on: ubuntu-latest
71
- steps:
72
- - uses: actions/checkout@v4
73
- - uses: ./.github/actions/ci-setup
74
- - name: Prettier
75
- run: pnpm prettier
76
-
77
- publish:
78
- name: "🔥 Publish"
79
- needs: [test, typecheck, lint, prettier]
80
- runs-on: ubuntu-latest
81
- if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
82
- steps:
83
- - uses: actions/checkout@v4
84
- - name: Set up Git config
85
- run: |
86
- git config user.name "$(git log -n 1 --pretty=format:%an)"
87
- git config user.email "$(git log -n 1 --pretty=format:%ae)"
88
- - uses: ./.github/actions/ci-setup
89
- - name: Build
90
- run: pnpm build
91
- - name: Version
92
- run: pnpm version prerelease --preid=alpha
93
- - name: Publish
94
- run: pnpm publish
95
- env:
96
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
97
- - name: Push
98
- run: git push
99
- - name: Push tag
100
- run: git push --tags
101
-
102
- dependabot:
103
- name: "🤖 Dependabot"
104
- needs: [test, typecheck, lint, prettier]
105
- runs-on: ubuntu-latest
106
- if: ${{ github.actor == 'dependabot[bot]' && github.event_name == 'pull_request'}}
107
- steps:
108
- - name: Fetch Dependabot metadata
109
- id: dependabot-metadata
110
- uses: dependabot/fetch-metadata@v2
111
- with:
112
- alert-lookup: true
113
- github-token: ${{ secrets.DEPENDABOT_METADATA_PAT }}
114
- - name: Enable auto-merge for Dependabot Security Updates
115
- run: gh pr merge --auto --squash "$PR_URL"
116
- env:
117
- PR_URL: ${{ github.event.pull_request.html_url }}
118
- GITHUB_TOKEN: ${{ secrets.DEPENDABOT_MERGE_PAT }}
119
- if: ${{ steps.dependabot-metadata.outputs.cvss != 0 }}
@@ -1,26 +0,0 @@
1
- name: Dependabot
2
- on:
3
- workflow_dispatch: {}
4
- schedule:
5
- # random HH:MM to avoid a load spike on GitHub Actions at 00:00
6
- - cron: 34 2 * * *
7
- permissions:
8
- contents: write
9
- statuses: read
10
- checks: read
11
- jobs:
12
- merge_prs:
13
- name: "Merge PRs > 1 week old"
14
- runs-on: ubuntu-latest
15
- steps:
16
- - name: Checkout
17
- uses: actions/checkout@v4
18
- - name: Merge PRs
19
- run: |
20
- set -e
21
- # Merge all Dependabot PRs that were created more than a week ago and have all checks passing
22
- for pr in `gh pr list --json number,author,createdAt --search "created:<=$(date -d "2 days ago" +"%Y-%m-%d") author:app/dependabot status:success" --jq '.[].number'`; do
23
- gh pr merge --squash "$pr"
24
- done
25
- env:
26
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,24 +0,0 @@
1
- on:
2
- workflow_dispatch: {}
3
- pull_request: {}
4
- push:
5
- branches:
6
- - main
7
- - master
8
- paths:
9
- - .github/workflows/semgrep.yml
10
- schedule:
11
- # random HH:MM to avoid a load spike on GitHub Actions at 00:00
12
- - cron: 53 8 * * *
13
- name: Semgrep
14
- jobs:
15
- semgrep:
16
- name: semgrep/ci
17
- runs-on: ubuntu-20.04
18
- env:
19
- SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
20
- container:
21
- image: returntocorp/semgrep
22
- steps:
23
- - uses: actions/checkout@v4
24
- - run: semgrep ci
package/.prettierrc.cjs DELETED
@@ -1,11 +0,0 @@
1
- module.exports = {
2
- printWidth: 80,
3
- tabWidth: 4,
4
- trailingComma: "all",
5
- singleQuote: false,
6
- semi: true,
7
- importOrder: ["^@casekit/(.*)$", "^[^.](.*)$", "^[./]"],
8
- importOrderSeparation: true,
9
- importOrderSortSpecifiers: true,
10
- plugins: ["@trivago/prettier-plugin-sort-imports"],
11
- };
@@ -1,28 +0,0 @@
1
- {
2
- "version": "2.0.0",
3
- "tasks": [
4
- {
5
- "type": "npm",
6
- "script": "build",
7
- "group": "build",
8
- "problemMatcher": [],
9
- "label": "npm: build",
10
- "detail": "rm -rf lib && tsc"
11
- },
12
- {
13
- "type": "npm",
14
- "script": "check:all",
15
- "problemMatcher": [],
16
- "label": "npm: check:all",
17
- "detail": "CI=true pnpm test && CI=true pnpm lint && CI=true pnpm prettier && CI=true pnpm typecheck"
18
- },
19
- {
20
- "type": "npm",
21
- "script": "build",
22
- "group": "build",
23
- "problemMatcher": [],
24
- "label": "npm: build",
25
- "detail": "rm -rf lib && tsc"
26
- }
27
- ]
28
- }
package/codecov.yml DELETED
@@ -1,7 +0,0 @@
1
- coverage:
2
- status:
3
- changes: off
4
- patch: off
5
- project:
6
- default:
7
- informational: true
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=orm.query.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orm.query.test.d.ts","sourceRoot":"","sources":["../src/orm.query.test.ts"],"names":[],"mappings":""}
@@ -1,22 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
- import { db } from "./test/db";
3
- import { seed } from "./test/seed";
4
- describe("orm.query", () => {
5
- test("allows arbitrary sql queries to be run against the database", async () => {
6
- await db.transact(async (db) => {
7
- await seed(db, {
8
- users: [
9
- {
10
- username: "Russell",
11
- tenants: [{ name: "Popova Park", posts: 6 }],
12
- },
13
- ],
14
- });
15
- const result = await db.query `
16
- select count(1)::int as total from casekit.post;
17
- `;
18
- expect(result[0]).toEqual({ total: 6 });
19
- }, { rollback: true });
20
- });
21
- });
22
- //# sourceMappingURL=orm.query.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orm.query.test.js","sourceRoot":"","sources":["../src/orm.query.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,EAAE,CAAC,QAAQ,CACb,KAAK,EAAE,EAAE,EAAE,EAAE;YACT,MAAM,IAAI,CAAC,EAAE,EAAE;gBACX,KAAK,EAAE;oBACH;wBACI,QAAQ,EAAE,SAAS;wBACnB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;qBAC/C;iBACJ;aACJ,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAmB;;iBAE/C,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACrB,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/src/Connection.ts DELETED
@@ -1,65 +0,0 @@
1
- import pg, { QueryResultRow } from "pg";
2
- import pgfmt from "pg-format";
3
- import * as uuid from "uuid";
4
-
5
- import { SQLStatement } from "./sql";
6
-
7
- export class Connection {
8
- constructor(
9
- private pool: pg.Pool,
10
- private client?: pg.PoolClient,
11
- ) {}
12
-
13
- public query = async <T extends QueryResultRow>(query: SQLStatement) => {
14
- if (this.client) {
15
- return this.client.query<T>(query);
16
- } else {
17
- return this.pool.query(query);
18
- }
19
- };
20
-
21
- public transact = async <T>(
22
- fn: (conn: Connection) => Promise<T>,
23
- { rollback = false }: { rollback?: boolean } = {},
24
- ) => {
25
- if (this.client) {
26
- const savepoint = uuid.v4();
27
- try {
28
- await this.client.query(pgfmt("SAVEPOINT %I", savepoint));
29
- const result = await fn(this);
30
- if (rollback) {
31
- await this.client.query(
32
- pgfmt("ROLLBACK TO SAVEPOINT %I", savepoint),
33
- );
34
- } else {
35
- await this.client.query(
36
- pgfmt("RELEASE SAVEPOINT %I", savepoint),
37
- );
38
- }
39
- return result;
40
- } catch (e) {
41
- await this.client.query(
42
- pgfmt("ROLLBACK TO SAVEPOINT %I", savepoint),
43
- );
44
- throw e;
45
- }
46
- } else {
47
- const client = await this.pool.connect();
48
- try {
49
- await client.query("BEGIN");
50
- const result = await fn(new Connection(this.pool, client));
51
- if (rollback) {
52
- await client.query("ROLLBACK");
53
- } else {
54
- await client.query("COMMIT");
55
- }
56
- return result;
57
- } catch (e) {
58
- await client.query("ROLLBACK");
59
- throw e;
60
- } finally {
61
- client.release();
62
- }
63
- }
64
- };
65
- }
package/src/errors.ts DELETED
@@ -1,18 +0,0 @@
1
- import { BaseModel } from "./schema/types/base/BaseModel";
2
-
3
- type OrmErrorMeta = {
4
- model?: [string, BaseModel];
5
- data?: Record<string, unknown>;
6
- };
7
-
8
- export class OrmError extends Error {
9
- meta: OrmErrorMeta | undefined;
10
-
11
- constructor(message: string, meta?: OrmErrorMeta) {
12
- super();
13
- this.message = message;
14
- this.meta = meta;
15
- }
16
- }
17
-
18
- export class InvalidModelDefinitionError extends OrmError {}
package/src/index.ts DELETED
@@ -1,16 +0,0 @@
1
- export { OrmError } from "./errors";
2
- export { migrator, type Migrator } from "./migrate";
3
- export { Orm, orm } from "./orm";
4
- export { pull } from "./pull";
5
- export * from "./queries/clauses/where/operators";
6
- export { type Middleware } from "./queries/middleware/Middleware";
7
- /**
8
- * TODO find a way to use the strict definitions here
9
- * without destroying VS Code autocomplete performance
10
- */
11
- export { type LooseModelDefinition as ModelDefinition } from "./schema/types/loose/LooseModelDefinition";
12
- export { type LooseRelationsDefinition as RelationsDefinition } from "./schema/types/loose/LooseRelationsDefinition";
13
- export { SQLStatement, sql } from "./sql";
14
- export type { ColumnName } from "./types/ColumnName";
15
- export type { ColumnType } from "./types/ColumnType";
16
- export type { ModelType } from "./types/ModelType";
package/src/logger.ts DELETED
@@ -1,3 +0,0 @@
1
- import pino from "pino";
2
-
3
- export const logger = pino({ enabled: process.env.NODE_ENV !== "test" });
@@ -1,46 +0,0 @@
1
- import { BaseOrm } from "../../schema/types/base/BaseOrm";
2
- import { SQLStatement } from "../../sql";
3
- import { createExtensionsSql } from "../sql/createExtensionsSql";
4
- import { createForeignKeyConstraintSql } from "../sql/createForeignKeyConstraintSql";
5
- import { createSchemasSql } from "../sql/createSchemasSql";
6
- import { createTableSql } from "../sql/createTableSql";
7
- import { createUniqueConstraintSql } from "../sql/createUniqueConstraintSql";
8
- import { dropSchemasSql } from "../sql/dropSchemasSql";
9
-
10
- export const implode = async (
11
- db: BaseOrm,
12
- { dryRun, output }: { dryRun: boolean; output: boolean },
13
- ) => {
14
- const statement = new SQLStatement();
15
-
16
- statement.push(dropSchemasSql(db), "\n");
17
- statement.push(createSchemasSql(db), "\n");
18
- statement.push(createExtensionsSql(db), "\n");
19
-
20
- for (const model of Object.values(db.models)) {
21
- statement.push(createTableSql(model), "\n");
22
- for (const constraint of model.uniqueConstraints) {
23
- statement.push(createUniqueConstraintSql(model, constraint), "\n");
24
- }
25
- }
26
-
27
- for (const model of Object.values(db.models)) {
28
- for (const foreignKey of model.foreignKeys) {
29
- statement.push(
30
- createForeignKeyConstraintSql(model, foreignKey),
31
- "\n",
32
- );
33
- }
34
- }
35
-
36
- if (output || process.env.ORM_VERBOSE_LOGGING) console.log(statement.text);
37
-
38
- if (!dryRun) {
39
- try {
40
- await db.connection.query(statement);
41
- } catch (e) {
42
- console.log(e);
43
- throw e;
44
- }
45
- }
46
- };
@@ -1 +0,0 @@
1
- export { type Migrator, migrator } from "./migrator";
@@ -1,24 +0,0 @@
1
- import { Orm } from "..";
2
- import { BaseOrm } from "../schema/types/base/BaseOrm";
3
- import { LooseModelDefinitions } from "../schema/types/loose/LooseModelDefinitions";
4
- import { LooseRelationsDefinitions } from "../schema/types/loose/LooseRelationsDefinitions";
5
- import { implode } from "./commands/implode";
6
-
7
- export class Migrator {
8
- public db: BaseOrm;
9
-
10
- constructor(db: BaseOrm) {
11
- this.db = db;
12
- }
13
-
14
- public async implode(opts = { dryRun: true, output: true }) {
15
- await implode(this.db, opts);
16
- }
17
- }
18
-
19
- export const migrator = <
20
- Models extends LooseModelDefinitions,
21
- Relations extends LooseRelationsDefinitions<Models>,
22
- >(
23
- db: Orm<Models, Relations>,
24
- ) => new Migrator(db as BaseOrm);
@@ -1,26 +0,0 @@
1
- import { unindent } from "@casekit/unindent";
2
-
3
- import pg from "pg";
4
- import { describe, expect, test } from "vitest";
5
-
6
- import { orm } from "../../orm";
7
- import { createExtensionsSql } from "./createExtensionsSql";
8
-
9
- describe("createExtensionsSql", () => {
10
- test("it generates a CREATE EXTENSION command for each extension", () => {
11
- const db = orm({
12
- extensions: ["uuid-ossp", "postgis"],
13
- models: {},
14
- pool: new pg.Pool(),
15
- });
16
- expect(createExtensionsSql(db)?.text).toEqual(unindent`
17
- CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
18
- CREATE EXTENSION IF NOT EXISTS postgis;
19
- `);
20
- });
21
-
22
- test("if no extensions are specified, it returns null", () => {
23
- const db = orm({ models: {}, pool: new pg.Pool() });
24
- expect(createExtensionsSql(db)).toEqual(null);
25
- });
26
- });
@@ -1,16 +0,0 @@
1
- import pgfmt from "pg-format";
2
-
3
- import { BaseOrm } from "../../schema/types/base/BaseOrm";
4
- import { SQLStatement } from "../../sql";
5
-
6
- export const createExtensionsSql = (db: BaseOrm): SQLStatement | null => {
7
- if (db.config.extensions?.length === 0) return null;
8
-
9
- return (
10
- new SQLStatement(
11
- db.config.extensions
12
- ?.map((e) => pgfmt("CREATE EXTENSION IF NOT EXISTS %I;", e))
13
- .join("\n"),
14
- ) ?? null
15
- );
16
- };