Meta tags:
description= The source code contains no comments, so the reasons behind non-obvious choices are recorded here. Each note names the file where the choice lives.;
Headings (most frequently used words):
the, and, its, name, in, on, are, to, generated, resource, not, is, sign, app, init, ui, supabase, pages, own, hasdefault, never, table, key, by, material, time, date, number, one, per, from, pidrang, layers, signed, out, demo, apps, throws, an, field, readonly, nullable, as, resourceform, timestamp, numeric, stay, text, each, columns, graphql, list, order, names, checked, before, demos, only, first, new, opens, page, design, notes, guide, reference, maintainers, core, cli, routing, injectauthprovider, error, injectresource, unknown, injectresourcelist, accepts, reactive, replace, based, exclusion, casts, create, update, every, needs, id, primary, contains, uses, imatch, ilike, looks, up, fields, runtime, warn, color, or, layer, has, selector, prefix, identified, position, scrolls, inside, container, long, value, stays, line, remounted, record, reused, introspecting, through, three, schema, providers, split, same, way, detected, strategy, extent, can, see, them, default, chosen, when, resources, ts, unsupported, left, mapped, against, rest, api, guessed, connection, settings, any, request, copy, load, lazily, navigation, layout, side, menu, hides, narrow, screens, link, points, path, provides, checks, everything, it, writes, anything, wizard, asks, for, url, defaults, service, role, publishable, secret, keys, legacy, kept, aliases, wires, itself, scripted, takes, answers, file, credentials, environment, offers, install, packages, after, writing, whose, tables, need, user, route, matters, action, flags, guard, routes, price, total, keep, no, save, lock, keeps, running, saves, with, 30, second, timeout, runs, at, release, gate, owns, servers, database, local,
Text of the page (most frequently used words):
the (1186), and (406), not (180), app (177), that (167), with (147), resource (122), its (118), page (114), only (111), table (102), are (93), when (84), for (80), one (79), src (78), sign (76), pidrang (74), #column (73), file (72), from (71), field (70), init (67), generated (65), every (64), run (64), #create (60), same (59), libs (59), key (57), lib (57), which (56), edit (54), cli (53), supabase (53), does (53), own (53), demo (51), never (51), layout (50), without (49), list (48), still (48), would (48), pages (48), default (47), resources (46), new (44), before (44), value (44), type (44), read (43), material (42), user (42), route (42), name (42), out (41), provider (40), what (39), each (39), has (38), routes (38), already (37), since (35), form (35), first (34), any (34), both (33), writes (33), apps (32), tailwind (32), cannot (32), error (32), nothing (32), this (31), keeps (31), time (31), save (31), reads (30), instead (30), schema (30), can (29), left (29), there (29), path (28), written (28), angular (27), plan (27), null (27), after (27), now (26), then (26), them (26), state (26), way (25), session (24), numeric (24), connection (24), text (24), second (23), see (23), whose (23), core (23), json (22), database (22), answers (22), because (22), through (22), into (22), stays (22), columns (22), menu (22), they (21), than (21), shows (21), names (21), once (21), guard (21), hasdefault (21), number (21), role (21), empty (21), postgrest (21), runs (20), other (20), must (20), kept (20), too (20), was (20), postgres (20), strategy (20), graphql (20), fields (20), date (20), test (19), leaves (19), comment (19), while (19), write (19), again (19), message (19), build (18), actions (18), url (18), checked (18), project (17), environment (17), files (17), signed (17), gets (17), tables (17), untouched (17), wizard (17), next (16), needs (16), navigation (16), change (16), two (16), later (16), says (16), but (16), shared (16), identity (16), required (16), used (16), below (16), config (15), server (15), call (15), request (15), generate (15), line (15), delete (15), changes (15), html (15), row (14), against (14), local (14), hand (14), checks (14), like (14), back (14), per (14), component (14), auth (14), above (14), export (14), therefore (14), string (14), syntax (14), record (14), hidden (14), else (14), data (14), service (14), nullable (14), readonly (14), open (13), bundle (13), version (13), inside (13), missing (13), rather (13), button (13), lock (13), show (13), may (13), refused (13), bigint (13), demos (12), itself (12), real (12), even (12), root (12), signal (12), adds (12), takes (12), edited (12), spec (12), payload (12), array (12), pg_graphql (12), screen (12), touched (12), host (12), width (12), resourceform (12), input (12), secret (11), exists (11), gate (11), packages (11), full (11), starts (11), refuses (11), failure (11), all (11), stops (11), added (11), asks (11), until (11), sync (11), holds (11), sees (11), always (11), note (11), created_at (11), anon (11), forms (11), running (10), fails (10), private (10), failed (10), installed (10), means (10), typescript (10), add (10), named (10), counts (10), existing (10), literal (10), template (10), use (10), opens (10), writing (10), fail (10), timestamp (10), link (9), visitor (9), lists (9), install (9), npm (9), node (9), package (9), release (9), reason (9), answer (9), set (9), those (9), earlier (9), wrote (9), content (9), question (9), alone (9), imports (9), shown (9), otherwise (9), false (9), stay (9), action (9), single (9), where (9), pattern (9), just (9), block (9), client (9), placeholder (9), keys (9), types (9), cell (9), layers (9), consumer (8), sets (8), comes (8), optional (8), could (8), goes (8), reported (8), providepidrang (8), code (8), follows (8), changed (8), anything (8), let (8), bound (8), import (8), such (8), check (8), created (8), typed (8), order (8), exactly (8), precision (8), accepts (8), guarded (8), unavailable (8), matches (8), theme (8), layer (8), direct (8), element (8), container (8), insert (8), overflow (8), stack (7), redirect (7), non (7), either (7), end (7), settles (7), started (7), saved (7), generates (7), uses (7), also (7), under (7), yet (7), found (7), providesigninpath (7), declares (7), about (7), whether (7), helpers (7), carries (7), covers (7), entry (7), true (7), store (7), sent (7), router (7), take (7), should (7), exist (7), integer (7), three (7), generic (7), color (7), fixed (7), off (7), document (7), throws (7), target (7), get (7), made (7), jwt (7), object (7), const (7), overlay (7), wide (7), writable (7), dirty (7), public (6), publishable (6), sb_publishable_ (6), their (6), welcome (6), tests (6), live (6), did (6), compile (6), need (6), exact (6), copied (6), outside (6), points (6), came (6), disabled (6), known (6), provides (6), authprovider (6), none (6), have (6), buttons (6), waiting (6), reports (6), replaced (6), edits (6), silently (6), keep (6), limit (6), know (6), renders (6), whole (6), returns (6), submit (6), match (6), policy (6), sends (6), prints (6), choice (6), pnpm (6), printed (6), whatever (6), errors (6), inputs (6), parsed (6), byte (6), probe (6), breakpoint (6), max (6), update (6), primary (6), actually (6), seed (6), level (5), security (5), repository (5), mode (5), readable (5), over (5), browser (5), success (5), who (5), another (5), components (5), load (5), everything (5), why (5), source (5), index (5), styles (5), being (5), hold (5), across (5), accepted (5), leave (5), lives (5), hint (5), here (5), make (5), fieldtype (5), rules (5), anonymous (5), signedout (5), click (5), status (5), rule (5), rename (5), products (5), openapi (5), select (5), tree (5), setup (5), breaks (5), built (5), notes (5), top (5), legacy (5), visible (5), warn (5), gives (5), works (5), wrong (5), defaults (5), application (5), strings (5), included (5), becomes (5), long (5), scrolls (5), header (5), wraps (5), mat (5), side (5), window (5), query (5), leaving (5), unsupported (5), format (5), prisma (5), sending (5), updatedat (5), model (5), native (5), regex (5), flag (4), start (4), removed (4), longer (4), starter (4), signing (4), lands (4), 2026 (4), resolves (4), reading (4), blocks (4), tools (4), visit (4), older (4), went (4), last (4), tab (4), seconds (4), reload (4), drops (4), caller (4), steps (4), current (4), finds (4), ones (4), place (4), makes (4), derived (4), follow (4), break (4), outcome (4), behind (4), result (4), hide (4), event (4), soon (4), case (4), timeout (4), including (4), loaded (4), constant (4), send (4), price (4), values (4), these (4), decimal (4), providers (4), double (4), declared (4), hides (4), say (4), function (4), rendered (4), reaches (4), layouts (4), inject (4), enabled (4), registered (4), offers (4), copy (4), more (4), come (4), pass (4), asked (4), depend (4), rows (4), questions (4), available (4), turns (4), invalid (4), quotes (4), definition (4), right (4), outlet (4), comments (4), rest (4), count (4), providerouter (4), api (4), sb_secret_ (4), how (4), had (4), blank (4), child (4), stop (4), parse (4), plain (4), detected (4), narrow (4), dark (4), system (4), main (4), 48rem (4), rendering (4), four (4), lost (4), supported (4), non_null (4), returning (4), css (4), selector (4), buildresourcepayload (4), undefined (4), design (4), releasing (3), previous (3), hosted (3), meant (3), supabasepublishablekey (3), valid (3), environments (3), old (3), fixtures (3), wired (3), playwright (3), unit (3), passed (3), startup (3), budget (3), showed (3), peer (3), node_modules (3), artifacts (3), port (3), share (3), serve (3), account (3), saves (3), cleared (3), late (3), safe (3), script (3), plus (3), injector (3), getidentity (3), injectauthsession (3), knows (3), ask (3), alongside (3), keeping (3), exits (3), yes (3), credentials (3), separate (3), succeeds (3), removes (3), keyed (3), opened (3), finished (3), allowed (3), explanation (3), specific (3), dataprovider (3), render (3), condition (3), seen (3), draft (3), land (3), reference (3), total (3), neither (3), unchanged (3), apply (3), further (3), data_type (3), treats (3), purpose (3), canmatchsignedin (3), changing (3), arrives (3), unknown (3), omitted (3), segment (3), settings (3), login (3), policies (3), least (3), introspection (3), passes (3), 129 (3), marked (3), view (3), gone (3), decides (3), yarn (3), folder (3), range (3), fresh (3), appsetup (3), support (3), listed (3), variables (3), messages (3), lines (3), title (3), listing (3), became (3), matching (3), adding (3), point (3), dashboard (3), your (3), warning (3), prompts (3), mistake (3), http (3), extension (3), ctrl (3), between (3), style (3), trailing (3), reused (3), property (3), exported (3), binding (3), rejects (3), resolved (3), push (3), labels (3), parses (3), token (3), relative (3), segments (3), serializer (3), injectauthprovider (3), escape (3), close (3), 390 (3), position (3), toolbar (3), links (3), capped (3), screens (3), wider (3), closed (3), applayout (3), module (3), variant (3), sources (3), shape (3), enum (3), boolean (3), jsonb (3), sort (3), defaultsorters (3), trigger (3), alter (3), label (3), insertinput (3), stored (3), bare (3), editable (3), day (3), split (3), maps (3), timestamptz (3), enough (3), edges (3), instance (3), 12rem (3), viewport (3), span (3), prefix (3), happens (3), fielderror (3), exception (3), pre (3), past (3), blocking (3), blocked (3), attached (3), runtime (3), search (3), ilike (3), contains (3), refine (2), ignored (2), projects (2), were (2), e2e (2), workspace (2), installs (2), tarballs (2), loading (2), staff_notes (2), mjs (2), generation (2), identities (2), properties (2), dependency (2), tested (2), deleting (2), ships (2), requests (2), reloaded (2), owns (2), enter (2), signs (2), flight (2), released (2), home (2), ran (2), elsewhere (2), attempt (2), dropped (2), injection (2), calling (2), onsessionchange (2), linkedsignal (2), params (2), rewritten (2), calls (2), step (2), opt (2), inlines (2), common (2), errorhandler (2), settimeout (2), settling (2), directly (2), visits (2), finishes (2), return (2), effect (2), earliersave (2), twice (2), recorded (2), done (2), locked (2), saying (2), custom (2), ends (2), pending (2), someone (2), collected (2), reserved (2), expected (2), give (2), map (2), carry (2), today (2), information_schema (2), lets (2), visitors (2), states (2), describes (2), control (2), signinlink (2), handler (2), loadcomponent (2), reloads (2), entries (2), cases (2), sessionpending (2), redirects (2), flags (2), authorization (2), paths (2), resource_routes_snippet (2), matters (2), grants (2), applies (2), readsneedsignin (2), given (2), extended (2), marks (2), needing (2), front (2), rerun (2), 125 (2), exports (2), schematic (2), git (2), decide (2), packagemanager (2), network (2), commands (2), warns (2), agnostic (2), pinned (2), work (2), choices (2), repeatable (2), secrets (2), part (2), parser (2), connectionfromplan (2), scripted (2), nor (2), development (2), except (2), replacing (2), some (2), several (2), ranges (2), withcomponentinputbinding (2), constants (2), ref (2), paste (2), 107 (2), missed (2), wires (2), wire (2), supabaseanonkey (2), receives (2), argument (2), wins (2), pasted (2), serves (2), asking (2), starting (2), unreachable (2), 200 (2), tried (2), cost (2), cloud (2), rejected (2), 401 (2), sits (2), requiring (2), receive (2), spread (2), during (2), 130 (2), depends (2), quote (2), aside (2), turned (2), appended (2), 131 (2), literals (2), comma (2), certain (2), alias (2), includes (2), anywhere (2), inferred (2), widens (2), templates (2), grows (2), endings (2), nocheck (2), composite (2), transpilemodule (2), tsconfig (2), find (2), skip (2), standalone (2), routing (2), identical (2), overwritten (2), href (2), boundary (2), routerlink (2), urltree (2), closes (2), middle (2), height (2), fallback (2), taller (2), scroll (2), shrink (2), ellipsis (2), scheme (2), canvas (2), themes (2), surface (2), display (2), disagree (2), tap (2), focus (2), keyboard (2), listener (2), phone (2), moment (2), matchmedia (2), creates (2), shell (2), imported (2), chosen (2), initial (2), password (2), reach (2), mappers (2), mapper (2), scalars (2), kinds (2), describetable (2), uuid (2), describe (2), createdat (2), fills (2), decision (2), 168 (2), fix (2), audit (2), clock (2), word (2), others (2), fixture (2), wrapped (2), although (2), reuses (2), independent (2), response (2), looks (2), expr (2), is_nullable (2), is_identity (2), column_default (2), identity_generation (2), is_generated (2), emits (2), losing (2), unquoted (2), behavior (2), serializes (2), bigfloat (2), int8 (2), lookup (2), int64 (2), smallint (2), zone (2), populated (2), oftype (2), wrapper (2), collection (2), constructed (2), auto (2), cells (2), cap (2), 20rem (2), reader (2), align (2), white (2), space (2), nowrap (2), inline (2), projected (2), focusable (2), resourcetable (2), region (2), div (2), using (2), collide (2), adapter (2), coexistence (2), showing (2), defaultvalueforfield (2), absent (2), though (2), box (2), genuinely (2), partial (2), typing (2), patch (2), shouldblocksubmit (2), attribute (2), validation (2), ctx (2), validators (2), callback (2), dynamic (2), reactive (2), applyeach (2), ever (2), parsing (2), amount (2), casts (2), imatch (2), differently (2), cast (2), replace (2), authentication (2), maintainers (2), getting (2), mit, licensed, inspired, affiliated, pager, github, ship, browsers, limited, unmodified, contributor, requires, containers, scanners, 127, toml, looked, heading, served, smoke, consumers, stopped, exceeded, workflows, crashes, dependencies, records, edgesout, vitest, resolve, unnoticed, sha256, checking, publishing, prove, bytes, verify, 4310, 4311, 4320, 4321, 4322, 4323, reuse, 4200, loopback, hosts, worker, reuseexistingserver, servers, submits, natively, disables, successful, ins, prevents, pulled, away, clears, early, reloading, injectsignin, sign_in_state, subscribed, unsubscribed, destroy, helper, themselves, latest, refresh, numbers, been, undone, bootstrapapplication, session_identity, importing, 156, caught, recognized, overwrites, binds, exiting, signinpage, unless, wants, demand, signin, 112, class, little, derive, unescaped, 177, plansignin, rethrows, turn, unlock, newer, injectsavelock, within, failures, disappears, times, limits, operation, settled, exposing, learns, ended, seeing, notice, shipped, hiding, expired, delivers, tick, provided, lazy, user_updated, cancelled, races, timer, applied, finally, retry, forever, legitimately, fetch, save_store, safety, net, exceeds, digits, represents, risk, unconditionally, scale, join, undetected, treated, unsafe, safer, inconsistency, candidate, deliberately, migrations, 20260914123253_create_demo_tables, sql, 163, declare, measure, protected, urlneedssignin, expires, displayed, disappear, registers, recovers, contract, signature, complete, loadchildren, weakmap, children, frame, offered, computes, expose, candelete, canedit, cancreate, fall, clashes, skiplocationchange, resource_unavailable_path, canmatch, patterns, captured, grant, permissive, granted, restrictive, deciding, expression, evaluated, catalog, guards, pg_class, relrowsecurity, emitted, unguarded, convenience, information, covered, admits, guarding, opening, canmatchresourceaction, authenticated, signedinresources, addsignedinguard, enables, selects, 145, candidates, touch, show_lists, isresourceactionenabled, poor, down, existingentryactions, declaresentryroute, isnewapp, undo, present, manager, lockfiles, searched, stray, lockfile, directory, plug, play, useful, registry, notices, installing, engines, bin, bring, picks, fits, pages_ui_layer_packages, sorted, modes, gained, problem, committed, repeat, overwrite, configuration, mirroring, filereplacements, recognizes, queryselector, safely, configs, something, customized, prepends, strips, rebuilds, accumulate, ng5002, appconfig, regular, expressions, positions, idempotent, features, concrete, memory, access, snippets, acceptance, manual, snippet, put, resourceroutes, xxx, migration, connect, framework, picked, 119, recommended, env, secret_key, prefixes, directions, service_role, working, stderr, console, migrates, renaming, widened, anonkey, pidrang_supabase_service_role_key, pidrang_supabase_anon_key, hands, worked, 124, pidrang_supabase_secret_key, pidrang_supabase_publishable_key, aliases, preference, pooler, supabaseappsetup, likeliest, sit, relied, refuse, verified, dns, prefilled, costs, less, become, kind, enable, continue, refusal, prompt, supabaseconnectionerror, pgrst202, listtables, answered, typical, told, pick, 121, third, whichever, 143, authroutes, param, folders, half, disk, job, force, lose, locks, regenerates, compares, formatter, switched, having, decided, joins, naming, askreadsneedsignin, recognize, taken, indentation, output, avoids, selection, computed, assertion, overlap, referenced, nowhere, diagnostics, commented, certainly, destructured, separated, winning, merges, declarations, assigns, tell, assignment, program, tuple, fit, option, forced, raise, occurrence, handled, instructions, expect, ignore, strictnullchecks, incremental, differs, pidrangconfig, options, defaultconfiguration, var, appresource, gettrailingcommentranges, generateresourcesfile, existed, got, mix, together, afterwards, assuming, lays, classified, ignoring, windows, different, meanwhile, saving, short, concurrent, applywriteplan, sourceroot, preflight, users, linking, unlike, malformed, breaking, external, urls, surrounding, spaces, clear, serializing, refusals, well, formed, dot, decoding, validated, piece, following, urlserializer, defaulturlserializer, sign_in_path, provide, shift, moving, auxclick, grid, 56px, 600px, 64px, density, reachable, background, transparent, widening, spacing, rem, font, size, area, sideways, pushes, words, sys, contents, thinks, ignores, clicks, toggles, shadow, resize, resized, pressed, jsdom, mediaquerylist, defaultview, composedpath, beforeeach, testbed, overridecomponent, remove, schemas, custom_elements_schema, injectresources, injectauthsessionstate, unused, ng8113, routeroutlet, appname, around, often, decorator, difference, barrel, besides, brings, 691, 500, modules, anyway, budgets, lazily, rewrites, published, parity, validate, 65535, slashes, trimmed, newline, tls, verifies, certificate, certificates, repeats, nan, abc, createsupabaseschemaprovider, assert, problems, capital, letter, renamed, lowercase, rls, advice, trusted, mutations, offer, 42501, 403, 42703, 404, invoices, inflect_names, guessed, arrays, enums, defined, harmless, refusing, subset, opaque, udt_name, assertpostgrestfield, inet, interval, bytea, citext, mapped, random, ago, 111, sorter, many, inserted_at, managed, usually, triggers, stores, discarded, admin, insertable, suggesting, defaultsvisible, invites, splits, lower, upper, capitalizes, lowercases, items, fixture_items, updated_at, publishes, affected, gaps, accept, guess, marker, assumed, assumption, mean, trusting, things, print, most, definitions, description, queried, explicit, distinction, whenever, posted, guessing, hardcoded, 22007, introspecttable, extent, expects, risks, rounds, treating, rounding, claimed, rely, to_json, fold, float, agree, integers, floats, originally, groups, scalar, versions, spellings, int32, serial, datetime, time_formats, timestamp_formats, timetz, recursive, depth, cover, margin, walks, unwrapobjecttype, exposes, relay, reaching, requested, unwrap, edge, interface, __type, nodeid, introspecting, matched, regardless, survives, initializer, lifetime, navigating, editing, product, recreating, iterates, destroys, recreates, patching, track, orders, equivalents, remounted, sizes, honour, few, thousand, characters, tall, cut, growing, held, 1280, pointer, move, wrap, truncate, vertical, min, overflowed, 711, 611, scroller, pane, took, belongs, boxes, axe, cause, scrollable, aria, tabindex, 100, identifies, called, duplicate, internal, announces, matcolumndef, identified, adapters, ng8023, enforced, lint, library, future, libraries, builder, directive, eslint, ordinary, misleadingly, suggest, opposite, fieldhint, trimming, much, described, paragraph, bug, chose, asymmetry, special, casing, combination, entirely, apart, violation, produces, body, emitting, legitimate, cosmetic, normalization, serialize, lossy, filters, trust, filtered, unfiltered, able, accident, unchecked, absence, saw, touppercase, stringify, emit, onsubmit, dependent, unrelated, method, fieldstate, markastouched, catch, emptied, vacuously, allow, raw, precisely, tells, omit, dirties, clearing, deliberate, validator, dirtied, converts, fieldrequiresvaluewhenempty, loop, synchronously, attaches, validates, ng0950, chooses, inspecting, dom, subsequent, keystroke, reproducing, loss, avoid, similarly, logged, represent, documented, failing, fixes, building, coerces, kicks, normalizeresourcevalue, ng01921, loses, round, trips, moved, group, tightened, calendar, bounds, hour, minute, month, digit, english, 2024, 99t99, formatpatternforfield, presentation, compatible, palette, scoped, red, scss, fieldtree, character, literally, wildcards, insensitive, metacharacter, escaped, conformance, btree, scans, large, trigram, pg_trgm, gin, gin_trgm_ops, filter, intentional, scope, oversight, getone, unify, unconstrained, narrowest, compiles, removing, properly, hardcode, express, worth, separately, metadata, produced, eligibility, consumed, final, non_editable_fields, based, exclusion, callers, signals, depending, example, parameter, skips, convention, getlist, injectresourcelist, typo, site, confusing, somewhere, throw, injectresource, configures, injects, letting, hit, silent, configured, auth_provider, reasons, obvious, overview, architecture, yourself, guide, sidebar, docs,
Text of the page (random words):
_items gives fixture items and generate resources file ts writes it on the resource and on each field prisma fills updatedat in its client so a prisma managed table usually has that column not null without a database default and an insert through postgrest that leaves it out fails the decision for 168 the column stays readonly and create becomes unavailable with a reason that gives the exact fix alter table public table alter column column set default now no strategy can see triggers so when a trigger already fills the column the user sets create true by hand in resources ts a nullable audit column without a default stays readonly with no block since postgres stores null sending now from the client was discarded it would need a new flag in pidrang core and in both resourceform s it would take the browser clock and an edit would still not update updatedat known limit with readonly an edit made in the admin does not update updatedat the prisma application or a trigger does under graphql describetable receives defaultsvisible false the audit column is readonly but no reason is added because graphql already blocks create for every insertable not null column with a message saying it cannot see defaults and a second reason suggesting alter table would be wrong for a column that already has a default the default list order is chosen when resources ts is generated libs demo shared src lib resource list state ts libs cli src lib generate resources file ts the generic list page used to sort every resource by id with uuid keys that order is random so a row created a second ago could land on any page 111 the page cannot just sort by created_at a table without that column would fail to load the cli on the other hand sees the columns of each table so it writes defaultsorters on the resource only when a created_at field of type timestamp or date exists or else a createdat one prisma and the page uses defaultsorters when there is one and id otherwise id stays as the second sorter because many rows can share the same created_at a hidden created_at still counts since a column can sort without being shown a column left out because its type is unsupported does not since it is not in fields created_at wins when both exist other names inserted_at are not detected a hand written defaultsorters covers them unsupported columns are left out never mapped to text libs cli src lib describe table ts libs cli supabase src lib field type ts the three mappers used to send any unknown type to text a jsonb column then came back as object object in an edit form and was written back as a string an array lost its shape the same way and an enum accepted any text each mapper now has a closed list of supported types text like uuid boolean the number types date timestamp time and reports anything else as unsupported type json jsonb arrays enums and other user defined types citext included bytea interval inet and so on describetable leaves those columns out of the generated resource the wizard names them in its actions question and pidrang init plan prints them before writing leaving a column out is only harmless when an insert can do without it so a left out column that is not null has no default the strategy can see and is not generated makes create unavailable for that table instead of refusing the whole table list show edit and delete still work an id of an unsupported type refuses the table since every page needs it when nothing writable is left only id generated columns and left out ones edit is unavailable too since its form would only show a save button create stays available because an insert with no value works when every column has a default column names postgrest reads as syntax the same rule as assertpostgrestfield in pidrang supabase plus the quote which a select cannot escape are left out the same way such a table name refuses the table postgres reports the supported subset through data_type and udt_name postgrest through format type array and enum and pg_graphql through the json and opaque scalars and the enum and list kinds graphql names are checked against the rest api not guessed libs cli supabase src lib graphql schema provider ts the generated pages read and write through postgrest so a name only matters if postgrest knows it pg_graphql can rename a table or a column inflect_names or a graphql name comment and nothing in the graphql schema says it did the first guard refused any table name with a capital letter that refused a real invoices table and let through a column renamed to a lowercase name the strategy now asks postgrest with the same anon key get rest v1 table select a b limit 0 which reads no row and works under rls a 404 means the table name is graphql s own a 42703 means a column name is and either refuses the table with advice to use the direct database connection a 401 403 or 42501 means the key cannot read the table at all and the table is refused too rather than trusted pg_graphql s mutations are not used to decide which actions to offer they follow the anon role s grants not the signed in user s connection settings are checked before any request libs cli supabase src lib connection problems ts assert valid supabase connection ts the prompts validate as the user types a project url with http s and no path query or credentials a non empty key a port from 1 to 65535 a non empty host database and user and createsupabaseschemaprovider checks the same rules again so a connection built without the prompts fails before any request trailing slashes are removed from the project url and the keys host database and user are trimmed before they are checked so a key pasted with a trailing newline is not sent as is the password is kept exactly as typed a number abc port used to reach pg as nan tls always verifies the certificate an empty ca path now means the system certificates a path means that ca no error message repeats a key or a password generated pages copy apps demo material libs cli src lib pages bundle sources ts libs cli src lib build pages bundle ts libs cli src lib generated pages ts tools sync generated pages ts the pages written by pidrang init are the generic pages of apps demo material they are resource agnostic and shared by every table so they are generated once not per table pages bundle sources ts lists which source file becomes which generated file and pnpm run sync pages rewrites generated pages ts from those sources the published cli only ships generated pages ts so it never reads a repository file at run time after changing a source page run pnpm run sync pages the parity test in generate pages bundle spec ts and pnpm run sync pages check fails while the generated file is out of date generated pages load lazily resource_routes_snippet in libs cli src lib generate pages bundle ts resource routes ts used to import the four pages so angular material s table and form code went into the initial bundle an ng new app with the supabase client the pages and the layout came to 1 00 mb above the 1 mb error budget ng new sets so ng build failed right after pidrang init found by the release gate s starter consumer each route now uses loadcomponent which brings the initial bundle of that app to 691 kb it is still above the 500 kb warning budget what stays is angular supabase supabase js and the layout s material modules which the first screen needs anyway init does not change the app s budgets which are the app s call the navigation layout is generated from the demos apps demo material src app layout app layout ts apps demo tailwind src app layout app layout ts tools sync layout ts libs cli src lib generated layout ts build layout module ts generate layout module ts like the pages the layout pidrang init writes is the demos own pnpm run sync layout reads both demo layouts inlines their template and styles constants into the component decorator and writes them as two strings into generated layout ts ci runs pnpm run sync layout check the only difference is the module the helpers are imported from the demos take them from pidrang demo shared the generated layout from pidrang index the page helpers barrel init writes with the pages whatever names are imported so the layout needs no file of its own besides src app layout app layout ts there is one variant per ui layer chosen from the app s package json pidrang tailwind gives the tailwind one so a tailwind app does not get angular material just for its shell the layout is written only on a new app see a new app opens on its first list an app with its own pages already has a shell and a second header and menu around it would be wrong more often than right writing it takes four more edits because a layout that is only written breaks the app app html gets app layout appname and app ts gets applayout in its imports edited on the syntax tree by edit app component ts routeroutlet is replaced when nothing else in the file uses it since angular warns about an unused standalone import ng8113 and kept otherwise app spec ts the should create the app test of ng new creates app which now creates applayout which reads the session through injectauthsessionstate it accepts no auth provider and the registered resources with injectresources which throws without providepidrang init adds testbed overridecomponent app remove imports applayout add schemas custom_elements_schema to the beforeeach the test still checks app without the layout the demos own app spec ts do the same app config ts gets providesigninpath sign in only when init writes the sign in page there see the generated sign in page writing the printed your sign in route placeholder instead would stop the app at startup since providesigninpath refuses it see the sign in link points only to a path the app provides the side menu hides on narrow screens apps demo material src app layout app layout ts apps demo tailwind src app layout app layout ts below 48rem the side menu starts closed covers the page when opened and closes after a link or a tap outside it and the focus goes back to the menu button after a link so a keyboard user is not left on an element that is gone above it nothing changes from the first layout the outside tap is a document click host listener that ignores clicks inside the menu and on the menu button which toggles it itself read from event composedpath rather than event target since a layout rendered inside a shadow root reaches the document with the host as its target the width is read once with matchmedia width 48rem on inject document defaultview when the layout is created there is no resize listener so a window resized after load keeps its menu state until the menu button is pressed the close after a link reads the same mediaquerylist whose matches is live so it follows the current width not the width at load without a window server rendering or without matchmedia jsdom which the unit tests of an ng new app use the menu starts open as before with server rendering a phone therefore shows the menu for a moment then hides it when the app takes over in the browser the server cannot know the width and rendering it closed there would hide it on every wide screen until then instead the breakpoint is written the same way in the script and in both styles width 48rem so they never disagree the tailwind layout uses max 48rem not max md max md follows the app s breakpoint md so an app that changes it would get an overlay while the script still thinks the screen is wide the material overlay is a grid not a fixed position below the breakpoint layout becomes one column of two rows main gets display contents so the toolbar and the page are the rows and the menu sits in the page s cell above it the menu then starts right below the toolbar whatever its height angular material s toolbar is 56px below 600px 64px above and density changes both and the menu button stays reachable to close it its background is mat sys surface so the dark theme stays readable with the canvas system color as fallback for a theme built without system variables mat all component themes so it is never transparent canvas follows the page s color scheme so a dark theme without system variables needs color scheme dark on the page to keep the overlay dark the tailwind menu links break long labels break words instead of widening the overlay and the overlay scrolls inside itself when the links are taller than the page below the header its header wraps below the breakpoint and its menu is capped at the screen width max w full since tailwind s spacing is in rem and grows with the root font size the page area is the scroll container there as main is on wide screens the tailwind main scrolls sideways below the breakpoint below the breakpoint the app name and the identity shrink and end with an ellipsis so the header never pushes the document wider than the screen above it they are shown in full as in the first layout left out on purpose or for later escape does not close the overlay the menu button does a ctrl click on a link closes it too on a narrow screen while a middle click an auxclick not a click leaves it open in the material layout the menu comes before the menu button in the document so tab from the button does not enter the open overlay shift tab does and moving it would change the wide layout the release gate checks the generated material layout at 390 px the generated tailwind layout is the demo tailwind file byte for byte sync layout check and demo tailwind runs the same 390 px checks routing the sign in link points only to a path the app provides libs demo shared src lib sign in path ts parse sign in path ts provide sign in path ts sign in url ts the demos own route is sign in route ts generated pages cannot know where a consumer app signs users in so sign_in_path defaults to null and the pages then say sign in as plain text rather than linking to a route that may not exist unlike injectauthprovider nothing throws when it is missing no sign in page is a valid setup providesigninpath parses the path once when the app config is built and the token holds the result so a malformed value stops the app at startup instead of breaking every page and pages only read it it parses with defaulturlserializer because it runs before any injector exists the path is kept as a urltree resolved from the root a string routerlink would be relative to the current page products login external urls segments surrounding spaces and the your sign in route placeholder pidrang init prints are refused with a clear message serializing the urltree already makes every href root relative so these refusals are readable errors not the security boundary a well formed path to a route that does not exist cannot be detected there dot segments are checked on the parsed segments after decoding so 2e 2e is refused too the path is validated with the default serializer while routerlink renders it with the app s own urlserializer so an app with a custom serializer gets the href that serializer wri...
|