DiamondDragon
DiamondDragon
Explore posts from servers
CDCloudflare Developers
Created by DiamondDragon on 9/30/2024 in #workers-help
Error on remote worker: APIError: A request to the Cloudflare API
I'm trying to test out a browser deployed on worker in a DO and getting this error
✘ [ERROR] Error on remote worker: APIError: A request to the Cloudflare API (/accounts/5aa6cae4d0260b6aae9d255f3b63242f/workers/scripts/playground-worker/edge-preview) failed.

at throwFetchError
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:159817:18)
at fetchResult
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:159730:5)
at process.processTicksAndRejections
(node:internal/process/task_queues:95:5)
at async createPreviewToken
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:174177:29)
at async createWorkerPreview
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:174198:17)
at async start
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:174924:34)
{
text: 'A request to the Cloudflare API
(/accounts/5aa6cae4d0260b6aae9d255f3b63242f/workers/scripts/playground-worker/edge-preview)
failed.',
notes: [
{
text: 'An unknown error has occured. If this
error persists, please file a report in the
workers-sdk GitHub repository
(https://github.com/cloudflare/workers-sdk/issues) or
reach out to your account team. [code: 10002]'
}
],
location: undefined,
kind: 'error',
code: 10002,
accountTag: '5aa6cae4d0260b6aae9d255f3b63242f'
}
✘ [ERROR] Error on remote worker: APIError: A request to the Cloudflare API (/accounts/5aa6cae4d0260b6aae9d255f3b63242f/workers/scripts/playground-worker/edge-preview) failed.

at throwFetchError
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:159817:18)
at fetchResult
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:159730:5)
at process.processTicksAndRejections
(node:internal/process/task_queues:95:5)
at async createPreviewToken
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:174177:29)
at async createWorkerPreview
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:174198:17)
at async start
(/Users/am/Coding/playground/node_modules/wrangler/wrangler-dist/cli.js:174924:34)
{
text: 'A request to the Cloudflare API
(/accounts/5aa6cae4d0260b6aae9d255f3b63242f/workers/scripts/playground-worker/edge-preview)
failed.',
notes: [
{
text: 'An unknown error has occured. If this
error persists, please file a report in the
workers-sdk GitHub repository
(https://github.com/cloudflare/workers-sdk/issues) or
reach out to your account team. [code: 10002]'
}
],
location: undefined,
kind: 'error',
code: 10002,
accountTag: '5aa6cae4d0260b6aae9d255f3b63242f'
}
My toml
name = "playground-worker"
main = "src/index.ts"
compatibility_date = "2024-09-23"
compatibility_flags = [ "nodejs_compat" ]

observability = { enabled = true }

workers_dev = false
send_metrics = false
browser = { binding = "MYBROWSER" }

[durable_objects]
bindings = [
{ name = "BROWSER_DO", class_name = "BrowserDurableObject" }
]

[[migrations]]
tag = "v1" # Should be unique for each entry
new_classes = ["BrowserDurableObject"]

[triggers]
# every 5 minutes
crons = ["*/5 * * * *"]
name = "playground-worker"
main = "src/index.ts"
compatibility_date = "2024-09-23"
compatibility_flags = [ "nodejs_compat" ]

observability = { enabled = true }

workers_dev = false
send_metrics = false
browser = { binding = "MYBROWSER" }

[durable_objects]
bindings = [
{ name = "BROWSER_DO", class_name = "BrowserDurableObject" }
]

[[migrations]]
tag = "v1" # Should be unique for each entry
new_classes = ["BrowserDurableObject"]

[triggers]
# every 5 minutes
crons = ["*/5 * * * *"]
6 replies
DTDrizzle Team
Created by DiamondDragon on 9/6/2024 in #help
Drizzle Zod refining not working?
Shouldn't this code for zod make an optional field firstName required? https://drizzle.run/t2zowcjw5f1xbb5ny7zq2j3n
3 replies
DTDrizzle Team
Created by DiamondDragon on 8/31/2024 in #help
Dynamic function get use typed column names using getTableConfig
I have both UUIDs and NanoIDs on every one of my tables. I am considering adding utils to map from uuid -> nanoID & vice versa. how would i make a dynamic function like this? basically under the assumption every table has a id and shortId column which is the nanoid
export async function getUuidFromShortId(table: PgTable, shortId: string) {
const { columns, name, schema } = getTableConfig(table)
const [result] = await db
.select({ id: columns.id })
.from(name)
.where(eq(columns.shortId, shortId))
.limit(1)
return result[0]?.id ?? null
}
export async function getUuidFromShortId(table: PgTable, shortId: string) {
const { columns, name, schema } = getTableConfig(table)
const [result] = await db
.select({ id: columns.id })
.from(name)
.where(eq(columns.shortId, shortId))
.limit(1)
return result[0]?.id ?? null
}
1 replies
CDCloudflare Developers
Created by DiamondDragon on 8/25/2024 in #pages-help
Error using API Create PagesProject with pulumi - Err 'You must set a production branch.'
Calling this from a monorepo. I want to use pulumi to create a pages project/update it
import { PagesProject, type PagesProjectArgs } from '@pulumi/cloudflare'

const projectName = 'spa-cf'
const CLOUDFLARE_ACCOUNT_ID = process.env.CLOUDFLARE_ACCOUNT_ID
const CLOUDFLARE_API_TOKEN = process.env.CLOUDFLARE_API_TOKEN

const pagesProjectConfig: PagesProjectArgs = {
accountId: CLOUDFLARE_ACCOUNT_ID,
name: projectName,
productionBranch: 'main',
buildConfig: {
buildCaching: true,
buildCommand: 'bun run build',
destinationDir: '../apps/spa/dist',
rootDir: '../apps/spa',
},
}

export const pagesProject = new PagesProject(projectName, pagesProjectConfig)

🚀 ~ file: pages.ts:58 ~ createProject ~ url: https://api.cloudflare.com/client/v4/accounts/xxxx/pages/projects
🚀 ~ file: pages.ts:58 ~ createProject ~ request: {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer XXX'
},
body: '{"accountId":"XXXX","name":"spa-cf","productionBranch":"main","buildConfig":{"buildCaching":true,"buildCommand":"bun run build","destinationDir":"../apps/spa/dist","rootDir":"../apps/spa"}}'
import { PagesProject, type PagesProjectArgs } from '@pulumi/cloudflare'

const projectName = 'spa-cf'
const CLOUDFLARE_ACCOUNT_ID = process.env.CLOUDFLARE_ACCOUNT_ID
const CLOUDFLARE_API_TOKEN = process.env.CLOUDFLARE_API_TOKEN

const pagesProjectConfig: PagesProjectArgs = {
accountId: CLOUDFLARE_ACCOUNT_ID,
name: projectName,
productionBranch: 'main',
buildConfig: {
buildCaching: true,
buildCommand: 'bun run build',
destinationDir: '../apps/spa/dist',
rootDir: '../apps/spa',
},
}

export const pagesProject = new PagesProject(projectName, pagesProjectConfig)

🚀 ~ file: pages.ts:58 ~ createProject ~ url: https://api.cloudflare.com/client/v4/accounts/xxxx/pages/projects
🚀 ~ file: pages.ts:58 ~ createProject ~ request: {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer XXX'
},
body: '{"accountId":"XXXX","name":"spa-cf","productionBranch":"main","buildConfig":{"buildCaching":true,"buildCommand":"bun run build","destinationDir":"../apps/spa/dist","rootDir":"../apps/spa"}}'
Initial deployment triggered: {
result: null,
success: false,
errors: [ { code: 8000033, message: 'You must set a production branch.' } ],
messages: []
}
Initial deployment triggered: {
result: null,
success: false,
errors: [ { code: 8000033, message: 'You must set a production branch.' } ],
messages: []
}
4 replies
DTDrizzle Team
Created by DiamondDragon on 6/20/2024 in #help
Use results of a column to pass where conditions elsewhere in the query?
I have a field that stores filters that I parse into the SQL conditions for a where clause. Or at least, that's the goal. That field is in my views table. Is it possible to pass the result of that field in views into a nested where condition?
export async function getTableData(opts: { db: Db; tableShortId: string; viewShortId: string }) {

const { db, tableShortId, viewShortId } = opts

const tableData = await db.query.views.findFirst({
where: and(eq(views.shortId, viewShortId), eq(views.tableId, tableShortId)),
columns: {
shortId: true,
},
with: {
// Get the view for the table
table: {
columns: { shortId: true },
with: {
fields: {
columns: { shortId: true },
},
records: {
//! is it possible to filter records by view.jsonColumn after being parsed
columns: { shortId: true },
with: {
export async function getTableData(opts: { db: Db; tableShortId: string; viewShortId: string }) {

const { db, tableShortId, viewShortId } = opts

const tableData = await db.query.views.findFirst({
where: and(eq(views.shortId, viewShortId), eq(views.tableId, tableShortId)),
columns: {
shortId: true,
},
with: {
// Get the view for the table
table: {
columns: { shortId: true },
with: {
fields: {
columns: { shortId: true },
},
records: {
//! is it possible to filter records by view.jsonColumn after being parsed
columns: { shortId: true },
with: {
1 replies
DTDrizzle Team
Created by DiamondDragon on 6/10/2024 in #help
construction a dynamic query builder generically ?
Ok i'm not really sure how to ask this but I'm trying to allow a user the ability in UI to build out a query builder where they can add many filters with potentially nested filters with AND/OR conjuctions. Like airtable. Anyone have any patterns how to do this? I had attempted to try to construct a mapping on the SQL operators and the drizzle functions but I can't get the types to work . I'm playing aroung just with the sql operator to try making ti work with more raw SQL. trying to wrap my head around this and its a pattern i've seen few apps implement and never seen any code online to use as a guide Ideally a user can do a query in the UI like below and the queries can be constructed dynamically.
Filter employes where
name = john AND
salary >= 50,000 AND
relatedDepartment contains 'billing' AND
( department_city does not contain NYC OR
whatever... equals blah
)
Filter employes where
name = john AND
salary >= 50,000 AND
relatedDepartment contains 'billing' AND
( department_city does not contain NYC OR
whatever... equals blah
)
const operators: Record<OperatorNames, Operator> = {
contains: {
label: 'Contains',
name: 'contains',
sql: 'LIKE',
drizzle: (column: Column, value: string | SQLWrapper): typeof like => {
return like(column, value)
},
},
// other operators...
}
const operators: Record<OperatorNames, Operator> = {
contains: {
label: 'Contains',
name: 'contains',
sql: 'LIKE',
drizzle: (column: Column, value: string | SQLWrapper): typeof like => {
return like(column, value)
},
},
// other operators...
}
1 replies
HHono
Created by DiamondDragon on 6/8/2024 in #help
Serialization of Date?
Is there any suggested guidance on how to handle js/json serialization? I ran into an issue using the hono client where the types break due to a Date being typed as a string after being returned from a hono route I see there are no data transformers provided by hono, so wondering what suggestions there are. https://discord.com/channels/1011308539819597844/1248521918554963979
10 replies
DTDrizzle Team
Created by DiamondDragon on 5/19/2024 in #help
Losing custom $types in pg jsonb using drizzle-zod
Not sure if this is an expected limitation of zod here
export const records = pgTable('records', {
id: uuid('id')
.primaryKey()
.$defaultFn(() => uuidv7()),
tableId: uuid('table_id')
.references(() => tables.id, { onDelete: 'cascade' })
.notNull(),
organizationId: uuid('organization_id')
.references(() => organizations.id, { onDelete: 'cascade' })
.notNull(),
recordByFieldId: jsonb('record_by_field_id').$type<RecordData>(),

})
export const records = pgTable('records', {
id: uuid('id')
.primaryKey()
.$defaultFn(() => uuidv7()),
tableId: uuid('table_id')
.references(() => tables.id, { onDelete: 'cascade' })
.notNull(),
organizationId: uuid('organization_id')
.references(() => organizations.id, { onDelete: 'cascade' })
.notNull(),
recordByFieldId: jsonb('record_by_field_id').$type<RecordData>(),

})
produces using $inferInsert
type Record = {
organizationId: string;
tableId: string;
id?: string;
recordByFieldId?: RecordData | null;
createdAt?: Date;
updatedAt?: Date | null;
}
type Record = {
organizationId: string;
tableId: string;
id?: string;
recordByFieldId?: RecordData | null;
createdAt?: Date;
updatedAt?: Date | null;
}
But when using drizzle zod, i lose RecordData
export const insertRecordSchema = createInsertSchema(records)
export type InsertRecord = z.infer<typeof insertRecordSchema>

// results in
type InsertRecord = {
organizationId: string;
tableId: string;
id?: string;
recordByFieldId?: any;
createdAt?: Date;
updatedAt?: Date | null;
}
export const insertRecordSchema = createInsertSchema(records)
export type InsertRecord = z.infer<typeof insertRecordSchema>

// results in
type InsertRecord = {
organizationId: string;
tableId: string;
id?: string;
recordByFieldId?: any;
createdAt?: Date;
updatedAt?: Date | null;
}
1 replies
CDCloudflare Developers
Created by DiamondDragon on 4/23/2024 in #pages-help
Can't deploy a nextjs pages site in subdirectory
No description
1 replies
DTDrizzle Team
Created by DiamondDragon on 4/17/2024 in #help
Generated SQL error / type error with operations on unique index
No description
1 replies
DTDrizzle Team
Created by DiamondDragon on 4/16/2024 in #help
Drizzle studio shows as blank page on Arc browser
No description
1 replies
CDCloudflare Developers
Created by DiamondDragon on 4/13/2024 in #workers-help
cron not running locally on the trigger specified
I'm using hono here but when i go to http://localhost:8787/__scheduled?cron=***** i see the response log
Hello
[wrangler:inf] GET /__scheduled 200 OK (11ms)
╭─────────────────────────────────────────────────────
Hello
[wrangler:inf] GET /__scheduled 200 OK (11ms)
╭─────────────────────────────────────────────────────
but I dont see anymore subsequent logs of the trigger again. am i doing anything wrong?
async function scheduledHandler(
event: ScheduledEvent,
env: Env,
ctx: ExecutionContext,
) {
const testMessages = [
'Hello',
'Goodbye',
'Welcome',
'Farewell',
'Greetings',
'I am leaving',
]
ctx.waitUntil(
(async () => {
const randomIndex = Math.floor(Math.random() * testMessages.length)
const randomMessage = testMessages[randomIndex]
console.log(randomMessage)
})(),
)
}

export default { fetch: app.fetch.bind(app), scheduled: scheduledHandler }
async function scheduledHandler(
event: ScheduledEvent,
env: Env,
ctx: ExecutionContext,
) {
const testMessages = [
'Hello',
'Goodbye',
'Welcome',
'Farewell',
'Greetings',
'I am leaving',
]
ctx.waitUntil(
(async () => {
const randomIndex = Math.floor(Math.random() * testMessages.length)
const randomMessage = testMessages[randomIndex]
console.log(randomMessage)
})(),
)
}

export default { fetch: app.fetch.bind(app), scheduled: scheduledHandler }
4 replies
CDCloudflare Developers
Created by DiamondDragon on 4/13/2024 in #pages-help
Project is set up for npm but it is currently being run via bun this might lead to build errors
Don't recall using npm when i init the repo but anyways, wondering what settings were set on npm that i should check out if im using bun
❯ nr
✔ script to run › preview
$ bun pages:build && wrangler pages dev .vercel/output/static
$ bunx @cloudflare/next-on-pages
⚡️ @cloudflare/next-on-pages CLI v.1.11.0

⚡️ The project is set up for npm but it is currently being run via bun this might lead to build errors, please be sure to use the same package manager your project uses when running @cloudflare/next-on-pages

⚡️ Detected Package Manager: bun (1.1.1)
⚡️ Preparing project...
⚡️ Project is ready
⚡️ Building project...
▲ Vercel CLI 34.0.0
WARNING: You should not upload the `.next` directory.
▲ Installing dependencies...
▲ removed 3 packages, and changed 96 packages in 18s

156 packages are looking for funding
▲ run `npm fund` for details
▲ Detected Next.js version: 14.2.0
▲ Detected `package-lock.json` generated by npm 7+
▲ Running "npm run build"
> next-cf@0.1.0 build
> next build
▲ ▲ Next.js 14.2.0
- Environments: .env.local
▲ Creating an optimized production build ...
▲ ✓ Compiled successfully
❯ nr
✔ script to run › preview
$ bun pages:build && wrangler pages dev .vercel/output/static
$ bunx @cloudflare/next-on-pages
⚡️ @cloudflare/next-on-pages CLI v.1.11.0

⚡️ The project is set up for npm but it is currently being run via bun this might lead to build errors, please be sure to use the same package manager your project uses when running @cloudflare/next-on-pages

⚡️ Detected Package Manager: bun (1.1.1)
⚡️ Preparing project...
⚡️ Project is ready
⚡️ Building project...
▲ Vercel CLI 34.0.0
WARNING: You should not upload the `.next` directory.
▲ Installing dependencies...
▲ removed 3 packages, and changed 96 packages in 18s

156 packages are looking for funding
▲ run `npm fund` for details
▲ Detected Next.js version: 14.2.0
▲ Detected `package-lock.json` generated by npm 7+
▲ Running "npm run build"
> next-cf@0.1.0 build
> next build
▲ ▲ Next.js 14.2.0
- Environments: .env.local
▲ Creating an optimized production build ...
▲ ✓ Compiled successfully
5 replies
TTCTheo's Typesafe Cult
Created by DiamondDragon on 4/9/2024 in #questions
Recommended guides for knowing which html tags to style globally?
my design skills aren't great and i've gotten to know CSS mainly through tailwind. Most of my experience is designing app components but i'm working on some blogs and am finding myself sometimes confused where i tend to end up apply tw classes on many different main tags and what nto. I notice a lot of projects style their globals.css for some of the common tags. I'm wondering if there are guides that suggest like "you should do x to your body gloally, y to your h1's etc). I feel like im a little bit dyslexic so i hate getting "lost" in my tw classes , esp. across pages or components
7 replies
DTDrizzle Team
Created by DiamondDragon on 4/7/2024 in #help
Missing nested where clause
No description
23 replies
DTDrizzle Team
Created by DiamondDragon on 3/21/2024 in #help
bun:sqlite - why is my sqlite3 version mismatched?
I'm trying to better understand JSONB functionality in sqlite so i replaced the 3.43 version on my mac by default with 3.45 from homebrew. but noticed some version mismatch the code I'm running using the bun:sqlite driver is console.log(db.all(sqlSELECT sqlite_version())) which returns 3.43 but as you can see below, in my terminal i have 3.45 installed. But i can't figure out why it's not working
which sqlite3
/opt/homebrew/opt/sqlite/bin/sqlite3

sqlite3 --version
3.45.2 2024-03-12 11:06:23 d8cd6d49b46a395b13955387d05e9e1a2a47e54fb99f3c9b59835bbefad6af77 (64-bit)
bun run src/scripts/save-jsonb.ts
[
{
version: "3.43.2",
}
]
which sqlite3
/opt/homebrew/opt/sqlite/bin/sqlite3

sqlite3 --version
3.45.2 2024-03-12 11:06:23 d8cd6d49b46a395b13955387d05e9e1a2a47e54fb99f3c9b59835bbefad6af77 (64-bit)
bun run src/scripts/save-jsonb.ts
[
{
version: "3.43.2",
}
]
sqlite3 src/db/db.db
SQLite version 3.45.2 2024-03-12 11:06:23
Enter ".help" for usage hints.
sqlite>
sqlite3 src/db/db.db
SQLite version 3.45.2 2024-03-12 11:06:23
Enter ".help" for usage hints.
sqlite>
when i go into the db from my project in vscode
1 replies
TtRPC
Created by DiamondDragon on 1/13/2024 in #❓-help
No typesafety after migrating to 11?
No description
16 replies
DTDrizzle Team
Created by DiamondDragon on 12/2/2023 in #help
createInsertSchema does not infer notNull() correclty?
"drizzle-orm": "^0.28.6", "drizzle-zod": "^0.5.1",
export const testTable = pgTable('accounts', {
id: varchar('id').primaryKey(),
optional: varchar('optional'),
notOptional: varchar('not_optional').notNull(),
unique: varchar('unique').unique().notNull(),
})

const testSchema = createInsertSchema(testTable)
type TestTypeWrong = z.infer<typeof testSchema>
type TestTypeCorrect = typeof testTable.$inferInsert
export const testTable = pgTable('accounts', {
id: varchar('id').primaryKey(),
optional: varchar('optional'),
notOptional: varchar('not_optional').notNull(),
unique: varchar('unique').unique().notNull(),
})

const testSchema = createInsertSchema(testTable)
type TestTypeWrong = z.infer<typeof testSchema>
type TestTypeCorrect = typeof testTable.$inferInsert
Results
type TestTypeWrong = {
id?: string;
optional?: string;
notOptional?: string;
unique?: string;
}
type TestTypeCorrect = {
id: string;
notOptional: string;
unique: string;
optional?: string;
}
type TestTypeWrong = {
id?: string;
optional?: string;
notOptional?: string;
unique?: string;
}
type TestTypeCorrect = {
id: string;
notOptional: string;
unique: string;
optional?: string;
}
2 replies
DTDrizzle Team
Created by DiamondDragon on 9/27/2023 in #help
Help with proper types (values)
No description
2 replies
DTDrizzle Team
Created by DiamondDragon on 9/23/2023 in #help
TypeError: client.unsafe is not a function
No description
7 replies