@tailor-platform/sdk 0.8.3 → 0.8.5

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @tailor-platform/sdk
2
2
 
3
+ ## 0.8.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [#22](https://github.com/tailor-platform/sdk/pull/22) [`a0bf525`](https://github.com/tailor-platform/sdk/commit/a0bf5259af8a87415d0d731c7995c2612ccc1046) Thanks [@remiposo](https://github.com/remiposo)! - Force excess property checking in defineConfig
8
+
9
+ ## 0.8.4
10
+
11
+ ### Patch Changes
12
+
13
+ - [#19](https://github.com/tailor-platform/sdk/pull/19) [`58e3486`](https://github.com/tailor-platform/sdk/commit/58e34866f5af9027c05d80f9164ffba8b1d1ff55) Thanks [@toiroakr](https://github.com/toiroakr)! - chore: remove unused Serial type and track utility type usage in Kysely generator
14
+
3
15
  ## 0.8.3
4
16
 
5
17
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  /// <reference path="./../plugin-generated.d.ts" />
2
2
 
3
- import { AppConfig, CodeGeneratorBase, Executor, Generator, Resolver, TailorDBTypeConfig } from "../types-Z4zRSgoj.mjs";
3
+ import { AppConfig, CodeGeneratorBase, Executor, Generator, Resolver, TailorDBTypeConfig } from "../types-BP7g8Bh3.mjs";
4
4
  import "citty";
5
5
  import "zod";
6
6
  import "@bufbuild/protobuf/wkt";
package/dist/cli/api.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { apply, generate, generateUserTypes, loadConfig, machineUserList, machineUserToken, show, workspaceCreate, workspaceDelete, workspaceList } from "../token-BMaa9KLz.mjs";
1
+ import { apply, generate, generateUserTypes, loadConfig, machineUserList, machineUserToken, show, workspaceCreate, workspaceDelete, workspaceList } from "../token-B9zkxSMS.mjs";
2
2
  import "../auth-Di3vQUrT.mjs";
3
3
 
4
4
  export { apply, generate, generateUserTypes, loadConfig, machineUserList, machineUserToken, show, workspaceCreate, workspaceDelete, workspaceList };
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { PATScope, applyCommand, commonArgs, createCommand, deleteCommand, fetchAll, fetchLatestToken, formatArgs, generateCommand, initOperatorClient, listCommand as listCommand$4, listCommand$1 as listCommand, loadAccessToken, loadConfig, loadConfigPath, loadWorkspaceId, parseFormat, printWithFormat, readPlatformConfig, showCommand, tokenCommand, userAgent, withCommonArgs, writePlatformConfig } from "../token-BMaa9KLz.mjs";
2
+ import { PATScope, applyCommand, commonArgs, createCommand, deleteCommand, fetchAll, fetchLatestToken, formatArgs, generateCommand, initOperatorClient, listCommand as listCommand$4, listCommand$1 as listCommand, loadAccessToken, loadConfig, loadConfigPath, loadWorkspaceId, parseFormat, printWithFormat, readPlatformConfig, showCommand, tokenCommand, userAgent, withCommonArgs, writePlatformConfig } from "../token-B9zkxSMS.mjs";
3
3
  import "../auth-Di3vQUrT.mjs";
4
4
  import { register } from "node:module";
5
5
  import { defineCommand, runCommand, runMain } from "citty";
@@ -1,5 +1,5 @@
1
1
  /// <reference path="./../plugin-generated.d.ts" />
2
2
 
3
- import { AuthConfig, AuthServiceInput, BuiltinIdP, ExecutorServiceConfig, ExecutorServiceInput, IDToken, IdPConfig, IdProviderConfig, OAuth2Client, OAuth2ClientGrantType, OIDC, PermissionCondition, QueryType, Resolver, ResolverServiceConfig, ResolverServiceInput, SAML, SCIMAttribute, SCIMAttributeMapping, SCIMAttributeType, SCIMAuthorization, SCIMConfig, SCIMResource, StaticWebsiteConfig, TailorField, TailorTypeGqlPermission, TailorTypePermission, TailorUser, TenantProviderConfig, UserAttributeKey, UserAttributeListKey, UserAttributeMap, UsernameFieldKey, ValueOperand, db, defineAuth, defineConfig, defineGenerators, defineIdp, defineStaticWebSite, unauthenticatedTailorUser } from "../types-Z4zRSgoj.mjs";
4
- import { FunctionOperation, GqlOperation, IncomingWebhookArgs, IncomingWebhookRequest, IncomingWebhookTrigger, Operation, RecordCreatedArgs, RecordDeletedArgs, RecordTrigger, RecordUpdatedArgs, ResolverExecutedArgs, ResolverExecutedTrigger, ScheduleTrigger, Trigger, WebhookOperation, createExecutor, createResolver, incomingWebhookTrigger, infer, output, recordCreatedTrigger, recordDeletedTrigger, recordUpdatedTrigger, resolverExecutedTrigger, scheduleTrigger, t } from "../index-CT3-7PLS.mjs";
3
+ import { AuthConfig, AuthServiceInput, BuiltinIdP, ExecutorServiceConfig, ExecutorServiceInput, IDToken, IdPConfig, IdProviderConfig, OAuth2Client, OAuth2ClientGrantType, OIDC, PermissionCondition, QueryType, Resolver, ResolverServiceConfig, ResolverServiceInput, SAML, SCIMAttribute, SCIMAttributeMapping, SCIMAttributeType, SCIMAuthorization, SCIMConfig, SCIMResource, StaticWebsiteConfig, TailorField, TailorTypeGqlPermission, TailorTypePermission, TailorUser, TenantProviderConfig, UserAttributeKey, UserAttributeListKey, UserAttributeMap, UsernameFieldKey, ValueOperand, db, defineAuth, defineConfig, defineGenerators, defineIdp, defineStaticWebSite, unauthenticatedTailorUser } from "../types-BP7g8Bh3.mjs";
4
+ import { FunctionOperation, GqlOperation, IncomingWebhookArgs, IncomingWebhookRequest, IncomingWebhookTrigger, Operation, RecordCreatedArgs, RecordDeletedArgs, RecordTrigger, RecordUpdatedArgs, ResolverExecutedArgs, ResolverExecutedTrigger, ScheduleTrigger, Trigger, WebhookOperation, createExecutor, createResolver, incomingWebhookTrigger, infer, output, recordCreatedTrigger, recordDeletedTrigger, recordUpdatedTrigger, resolverExecutedTrigger, scheduleTrigger, t } from "../index-Bwrm8M8p.mjs";
5
5
  export { AuthConfig, AuthServiceInput, BuiltinIdP, ExecutorServiceConfig, ExecutorServiceInput, FunctionOperation, GqlOperation, IDToken, IdPConfig, IdProviderConfig, IncomingWebhookArgs, IncomingWebhookRequest, IncomingWebhookTrigger, OAuth2Client, OAuth2ClientGrantType, OIDC, Operation, PermissionCondition, QueryType, RecordCreatedArgs, RecordDeletedArgs, RecordTrigger, RecordUpdatedArgs, Resolver, ResolverExecutedArgs, ResolverExecutedTrigger, ResolverServiceConfig, ResolverServiceInput, SAML, SCIMAttribute, SCIMAttributeMapping, SCIMAttributeType, SCIMAuthorization, SCIMConfig, SCIMResource, ScheduleTrigger, StaticWebsiteConfig, TailorField, TailorTypeGqlPermission, TailorTypePermission, TailorUser, TenantProviderConfig, Trigger, UserAttributeKey, UserAttributeListKey, UserAttributeMap, UsernameFieldKey, ValueOperand, WebhookOperation, createExecutor, createResolver, db, defineAuth, defineConfig, defineGenerators, defineIdp, defineStaticWebSite, incomingWebhookTrigger, infer, output, recordCreatedTrigger, recordDeletedTrigger, recordUpdatedTrigger, resolverExecutedTrigger, scheduleTrigger, t, unauthenticatedTailorUser };
@@ -1,6 +1,6 @@
1
1
  /// <reference path="./plugin-generated.d.ts" />
2
2
 
3
- import { AllowedValues, AllowedValuesOutput, ArrayFieldOutput, ExecutorInput, FieldMetadata, FieldOptions, FieldOutput, FunctionOperation, GqlOperation, IncomingWebhookTrigger as IncomingWebhookTrigger$1, InferFieldsOutput, RecordTrigger as RecordTrigger$1, ResolverExecutedTrigger as ResolverExecutedTrigger$1, ResolverInput, ScheduleTriggerInput, TailorDBType, TailorField, TailorUser, WebhookOperation, output as output$1 } from "./types-Z4zRSgoj.mjs";
3
+ import { AllowedValues, AllowedValuesOutput, ArrayFieldOutput, ExecutorInput, FieldMetadata, FieldOptions, FieldOutput, FunctionOperation, GqlOperation, IncomingWebhookTrigger as IncomingWebhookTrigger$1, InferFieldsOutput, RecordTrigger as RecordTrigger$1, ResolverExecutedTrigger as ResolverExecutedTrigger$1, ResolverInput, ScheduleTriggerInput, TailorDBType, TailorField, TailorUser, WebhookOperation, output as output$1 } from "./types-BP7g8Bh3.mjs";
4
4
  import { EmptyObject } from "type-fest";
5
5
  import { Client } from "@urql/core";
6
6
  import { StandardCRON } from "ts-cron-validator";
@@ -1088,59 +1088,99 @@ var TypeProcessor = class TypeProcessor {
1088
1088
  * Convert a ParsedTailorDBType into KyselyTypeMetadata.
1089
1089
  */
1090
1090
  static async processType(type) {
1091
- const typeDef = this.generateTableInterface(type);
1091
+ const result = this.generateTableInterface(type);
1092
1092
  return {
1093
1093
  name: type.name,
1094
- typeDef
1094
+ typeDef: result.typeDef,
1095
+ usedUtilityTypes: result.usedUtilityTypes
1095
1096
  };
1096
1097
  }
1097
1098
  /**
1098
1099
  * Generate the table interface.
1099
1100
  */
1100
1101
  static generateTableInterface(type) {
1101
- const fields = ["id: Generated<string>;"];
1102
- for (const [fieldName, parsedField] of Object.entries(type.fields)) {
1103
- if (fieldName === "id") continue;
1104
- const fieldType = this.generateFieldType(parsedField.config);
1105
- fields.push(`${fieldName}: ${fieldType};`);
1106
- }
1107
- return ml`
1102
+ const fieldResults = Object.entries(type.fields).filter(([fieldName]) => fieldName !== "id").map(([fieldName, parsedField]) => ({
1103
+ fieldName,
1104
+ ...this.generateFieldType(parsedField.config)
1105
+ }));
1106
+ const fields = ["id: Generated<string>;", ...fieldResults.map((result) => `${result.fieldName}: ${result.type};`)];
1107
+ const aggregatedUtilityTypes = fieldResults.reduce((acc, result) => ({
1108
+ Timestamp: acc.Timestamp || result.usedUtilityTypes.Timestamp,
1109
+ Serial: acc.Serial || result.usedUtilityTypes.Serial
1110
+ }), {
1111
+ Timestamp: false,
1112
+ Serial: false
1113
+ });
1114
+ return {
1115
+ typeDef: ml`
1108
1116
  ${type.name}: {
1109
1117
  ${fields.join("\n")}
1110
1118
  }
1111
- `;
1119
+ `,
1120
+ usedUtilityTypes: aggregatedUtilityTypes
1121
+ };
1112
1122
  }
1113
1123
  /**
1114
1124
  * Generate the complete field type including array and null modifiers.
1115
1125
  */
1116
1126
  static generateFieldType(fieldConfig) {
1117
- const baseType = this.getBaseType(fieldConfig);
1127
+ const baseTypeResult = this.getBaseType(fieldConfig);
1128
+ const usedUtilityTypes = { ...baseTypeResult.usedUtilityTypes };
1118
1129
  const isArray = fieldConfig.array === true;
1119
1130
  const isNullable = fieldConfig.required !== true;
1120
- let finalType = baseType;
1121
- if (isArray) finalType = `${baseType}[]`;
1131
+ let finalType = baseTypeResult.type;
1132
+ if (isArray) finalType = `${baseTypeResult.type}[]`;
1122
1133
  if (isNullable) finalType = `${finalType} | null`;
1123
- if (fieldConfig.serial) finalType = `Serial<${finalType}>`;
1134
+ if (fieldConfig.serial) {
1135
+ usedUtilityTypes.Serial = true;
1136
+ finalType = `Serial<${finalType}>`;
1137
+ }
1124
1138
  if (fieldConfig.hooks?.create) finalType = `Generated<${finalType}>`;
1125
- return finalType;
1139
+ return {
1140
+ type: finalType,
1141
+ usedUtilityTypes
1142
+ };
1126
1143
  }
1127
1144
  /**
1128
1145
  * Get the base Kysely type for a field (without array/null modifiers).
1129
1146
  */
1130
1147
  static getBaseType(fieldConfig) {
1131
- switch (fieldConfig.type) {
1148
+ const fieldType = fieldConfig.type;
1149
+ const usedUtilityTypes = {
1150
+ Timestamp: false,
1151
+ Serial: false
1152
+ };
1153
+ let type;
1154
+ switch (fieldType) {
1132
1155
  case "uuid":
1133
- case "string": return "string";
1156
+ case "string":
1157
+ type = "string";
1158
+ break;
1134
1159
  case "integer":
1135
- case "float": return "number";
1160
+ case "float":
1161
+ type = "number";
1162
+ break;
1136
1163
  case "date":
1137
- case "datetime": return "Timestamp";
1164
+ case "datetime":
1165
+ usedUtilityTypes.Timestamp = true;
1166
+ type = "Timestamp";
1167
+ break;
1138
1168
  case "bool":
1139
- case "boolean": return "boolean";
1140
- case "enum": return this.getEnumType(fieldConfig);
1169
+ case "boolean":
1170
+ type = "boolean";
1171
+ break;
1172
+ case "enum":
1173
+ type = this.getEnumType(fieldConfig);
1174
+ break;
1141
1175
  case "nested": return this.getNestedType(fieldConfig);
1142
- default: return "string";
1176
+ default:
1177
+ type = "string";
1178
+ break;
1143
1179
  }
1180
+ return {
1181
+ type,
1182
+ usedUtilityTypes
1183
+ };
1144
1184
  }
1145
1185
  /**
1146
1186
  * Get the enum type definition.
@@ -1157,25 +1197,52 @@ var TypeProcessor = class TypeProcessor {
1157
1197
  */
1158
1198
  static getNestedType(fieldConfig) {
1159
1199
  const fields = fieldConfig.fields;
1160
- if (!fields || typeof fields !== "object") return "string";
1161
- const fieldTypes = [];
1162
- for (const [fieldName, nestedFieldConfig] of Object.entries(fields)) {
1163
- const fieldType = this.generateFieldType(nestedFieldConfig);
1164
- fieldTypes.push(`${fieldName}: ${fieldType}`);
1165
- }
1166
- return `{\n ${fieldTypes.join(";\n ")}${fieldTypes.length > 0 ? ";" : ""}\n}`;
1200
+ if (!fields || typeof fields !== "object") return {
1201
+ type: "string",
1202
+ usedUtilityTypes: {
1203
+ Timestamp: false,
1204
+ Serial: false
1205
+ }
1206
+ };
1207
+ const fieldResults = Object.entries(fields).map(([fieldName, nestedFieldConfig]) => ({
1208
+ fieldName,
1209
+ ...this.generateFieldType(nestedFieldConfig)
1210
+ }));
1211
+ const fieldTypes = fieldResults.map((result) => `${result.fieldName}: ${result.type}`);
1212
+ const aggregatedUtilityTypes = fieldResults.reduce((acc, result) => ({
1213
+ Timestamp: acc.Timestamp || result.usedUtilityTypes.Timestamp,
1214
+ Serial: acc.Serial || result.usedUtilityTypes.Serial
1215
+ }), {
1216
+ Timestamp: false,
1217
+ Serial: false
1218
+ });
1219
+ return {
1220
+ type: `{\n ${fieldTypes.join(";\n ")}${fieldTypes.length > 0 ? ";" : ""}\n}`,
1221
+ usedUtilityTypes: aggregatedUtilityTypes
1222
+ };
1167
1223
  }
1168
1224
  static async processTypes(types, namespace) {
1225
+ const aggregatedUtilityTypes = Object.values(types).reduce((acc, type) => ({
1226
+ Timestamp: acc.Timestamp || type.usedUtilityTypes.Timestamp,
1227
+ Serial: acc.Serial || type.usedUtilityTypes.Serial
1228
+ }), {
1229
+ Timestamp: false,
1230
+ Serial: false
1231
+ });
1232
+ const utilityTypeDeclarations = [];
1233
+ if (aggregatedUtilityTypes.Timestamp) utilityTypeDeclarations.push(`type Timestamp = ColumnType<Date, Date | string, Date | string>;`);
1234
+ utilityTypeDeclarations.push(ml`
1235
+ type Generated<T> = T extends ColumnType<infer S, infer I, infer U>
1236
+ ? ColumnType<S, I | undefined, U>
1237
+ : ColumnType<T, T | undefined, T>;
1238
+ `);
1239
+ if (aggregatedUtilityTypes.Serial) utilityTypeDeclarations.push(`type Serial<T = string | number> = ColumnType<T, never, never>;`);
1169
1240
  return [
1170
1241
  ml`
1171
1242
  import { type ColumnType, Kysely } from "kysely";
1172
1243
  import { TailordbDialect } from "@tailor-platform/function-kysely-tailordb";
1173
1244
 
1174
- type Timestamp = ColumnType<Date, Date | string, Date | string>;
1175
- type Generated<T> = T extends ColumnType<infer S, infer I, infer U>
1176
- ? ColumnType<S, I | undefined, U>
1177
- : ColumnType<T, T | undefined, T>;
1178
- type Serial<T = string | number> = ColumnType<T, never, never>;
1245
+ ${utilityTypeDeclarations.join("\n")}
1179
1246
  `,
1180
1247
  TypeProcessor.generateNamespaceInterface(Object.values(types), namespace),
1181
1248
  ml`
@@ -1264,7 +1264,7 @@ interface AppConfig<Auth extends AuthConfig = AuthConfig, Idp extends IdPConfig[
1264
1264
  executor?: ExecutorServiceInput;
1265
1265
  staticWebsites?: StaticWebsites;
1266
1266
  }
1267
- declare function defineConfig<const Config extends AppConfig>(config: Config): Config;
1267
+ declare function defineConfig<const Config extends AppConfig & Record<Exclude<keyof Config, keyof AppConfig>, never>>(config: Config): Config;
1268
1268
  declare function defineGenerators(...configs: GeneratorConfig[]): (["@tailor-platform/kysely-type", {
1269
1269
  distPath: string;
1270
1270
  }] | ["@tailor-platform/seed", {
@@ -1,7 +1,7 @@
1
1
  /// <reference path="./../../plugin-generated.d.ts" />
2
2
 
3
- import { TailorDBType, TailorField, TailorUser } from "../../types-Z4zRSgoj.mjs";
4
- import { output } from "../../index-CT3-7PLS.mjs";
3
+ import { TailorDBType, TailorField, TailorUser } from "../../types-BP7g8Bh3.mjs";
4
+ import { output } from "../../index-Bwrm8M8p.mjs";
5
5
  import { StandardSchemaV1 } from "@standard-schema/spec";
6
6
 
7
7
  //#region src/utils/test/index.d.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailor-platform/sdk",
3
- "version": "0.8.3",
3
+ "version": "0.8.5",
4
4
  "description": "Tailor Platform SDK - The SDK to work with Tailor Platform",
5
5
  "license": "MIT",
6
6
  "main": "./dist/configure/index.mjs",