mirror of
https://github.com/HeyPuter/puter.git
synced 2026-10-07 20:31:50 +00:00
* fix: dynamodb health checks and client recreation (#2789) * wip: no nanoServices groundwork * feat: data clients in new shape * wip: auth and perms in new system * more wip * middlewaters mainly done * wip: fsv2 in new layout * old fs v2 migration * driver system * driver and old fs fixes * ai drivers wip * stream support * metering in ai chat driver * wip: new auth * rate limit and auth routes * captcha and anti csrf * fix: types * auth store * app logic * wip most other dricvers * fs * mostly kill all legacy stuff * fs finish * fix: redis usage * ai controller * driver cleanup * socket io in v2 * broadcast and crudq stuff * subdomains * notifcations and shares * fix bad syntaxes * auth wip Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * extensions * extension setup * more routes * sql migrations and default services * home router * tier 7 * everything else * everything else * remaining missing bits * server health * logs * cleanup * deps * cleanup 2 * more cleanup 2 * boot * fix launch * config fix * move file * fix: tsconfig things * fix: extension loading * launching * fix: drivers * fix: others * fix: icons * fix: file uploads * fs fixes * fix: fs api * fix: dev-center * config * add back telemetry * lint stuff * husky hooks * fix: fs oss * fix: config migration * config migration * migrate scripts + replicate * runner * fix: merge defafult config * fix: default region * fix: api domain * fix paths in readfile * fix fs entry default s3 * NS: Remove Referral && Entri Service * dep cleanups * fix: static assets * fix: kv and perms * fix: driver registrations * fix: home mapping * fix: rao * adding back 500 alarm * fix: build paths * fix: fs and kv shapes * fix: kv shape * more kv coercing and ai chat matching format as prior * fix: private app gates * private app caches * fix: whole bunch of legacy shape issues * update template jsonc * fix caching partial oidc and fs signed paths * more oidc fixes * fix: wip * fix: private apps * admin route fixes * fix: last few things hopefully * claude uploads * fix security for app only routes * fix kv system namespace * stuff * fix: app and kv and suggested apps * fix:open item * fix: FS operations * fix: default app icons * add back token-read and WSL support * metering fixes * fix: fsEntry * perm scanners and implicators * proper download endpoint * fix: download * fix anti csrft on v2 * fix file extensions, app icons * fold in v1 fixes from origin/main into v2 equivalents Re-applies the v1 fixes that landed on origin/main into their v2 counterparts since the v1 files were deleted on DS/wip during the v2 migration. v1 commits referenced below. - SQLBatcher: flush immediately when queue hits maxBatchSize instead of racing the timer (v1 12f48238). - RedisClient: drop maxRetriesPerRequest from 2 to 1 to shrink failure window (v1b6776ab4). - ChatCompletionDriver: default minimumCredits to 1 when unset/zero so zero-cost precheck doesn't auto-pass (v136bd6073). - OpenAiImageProvider: add gpt-image-2 support — open-ended size rules, token-based cost estimator, arbitrary-size normalizer, isGpt prefix broadened to gpt-image- (v1f14f1bf4). models.ts auto-merged via rename detection. - AppStore: bump row cache TTL from 5m to 24h (v16b3196ed). Not ported: v1 app-object Redis cache (bdfa12b5/b886dde3) — v2's #toClient recomputes filetype_associations/created_from_origin per read; adding a second cache layer is a larger change for a follow-up. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * remoe anti-csrf from auth routes that had not used them * more icon fixes * fix worker functionality * fix: app and subdomain es Co-authored-by: Copilot <copilot@github.com> * fix PUT-761 * fix: PUT-748 * fix: rename fsService * Add security back to WorkerDriver * Migrate worker from fsEntry to fs. Fix cache issue * remove ability to create symlinks * strict webdav acl * require auth for wisp * chore: service renames * Add metering back to puter peer api * fix: PUT-760 PUT-749 * fix: PUT-746 * fix: peer cost Co-authored-by: Copilot <copilot@github.com> * fix: 771 * change order of peer controller * fix: create appdata folder for app on get auth token * fix: align delete site and list sites * delete: putility * fix subdomains * Add support for tilde in subdomains, fix subdomain update * cleanup PeerController.ts and fix billing oversight (#2844) * fix: PUT-786 * fix: bugs * fix: issues with multiple subdomain queries, or permission checks * fix: harden response shapes to not contain uneeded fields * fix: move state to redis * fix: missing kv methods + better sec Co-authored-by: Copilot <copilot@github.com> * fix: subdomainStore limit * fix: missing path resolution Co-authored-by: Copilot <copilot@github.com> * fs fixes * fix: undef error * fix fs + cleanup * fix: npm audit fixes * heal path entries where missing Co-authored-by: Copilot <copilot@github.com> * fix: caching Co-authored-by: Copilot <copilot@github.com> * fix: cache inconsistencies Co-authored-by: Copilot <copilot@github.com> * fix: app driver metadata Co-authored-by: Copilot <copilot@github.com> * remove extraneous comma * fix: associated app icons * fix: bad tool call * Add validation to WorkerDriver#getFilePaths * misc fs and auth issues Co-authored-by: Copilot <copilot@github.com> * fix: oidc errors Co-authored-by: Copilot <copilot@github.com> * fix: PUT-797 * fix: legacy appdata_app Co-authored-by: Copilot <copilot@github.com> * fix: add alert logs Co-authored-by: Copilot <copilot@github.com> * fix: error handling * Disable sharecontroller * fix: remove private user identifier for ai * fix: private app fixes * Add backback signup_server * fix: completionId size Co-authored-by: Copilot <copilot@github.com> * fix: revalidate path for oidc * fix: revalidate path for oidc * fix: email validation Co-authored-by: Copilot <copilot@github.com> * fix: user create query * fix: middleware extensions Co-authored-by: Copilot <copilot@github.com> * use x-forwarded-for for req ip forwarded * fix: missing last_activity ts * feat: add cache broadcast to subdomains * fix: update config typing --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: ProgrammerIn-wonderland <3838shah@gmail.com> Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Nariman Jelveh <nj@puter.com> Co-authored-by: velzie <velzie@velzie.rip>
276 lines
5.0 KiB
JavaScript
276 lines
5.0 KiB
JavaScript
/*
|
|
* Copyright (C) 2024-present Puter Technologies Inc.
|
|
*
|
|
* This file is part of Puter.
|
|
*
|
|
* Puter is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as published
|
|
* by the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
const adjectives = [
|
|
'amazing',
|
|
'ambitious',
|
|
'articulate',
|
|
'cool',
|
|
'bubbly',
|
|
'mindful',
|
|
'noble',
|
|
'savvy',
|
|
'serene',
|
|
'sincere',
|
|
'sleek',
|
|
'sparkling',
|
|
'spectacular',
|
|
'splendid',
|
|
'spotless',
|
|
'stunning',
|
|
'awesome',
|
|
'beaming',
|
|
'bold',
|
|
'brilliant',
|
|
'cheerful',
|
|
'modest',
|
|
'motivated',
|
|
'friendly',
|
|
'fun',
|
|
'funny',
|
|
'generous',
|
|
'gifted',
|
|
'graceful',
|
|
'grateful',
|
|
'passionate',
|
|
'patient',
|
|
'peaceful',
|
|
'perceptive',
|
|
'persistent',
|
|
'helpful',
|
|
'sensible',
|
|
'loyal',
|
|
'honest',
|
|
'clever',
|
|
'capable',
|
|
'calm',
|
|
'smart',
|
|
'genius',
|
|
'bright',
|
|
'charming',
|
|
'creative',
|
|
'diligent',
|
|
'elegant',
|
|
'fancy',
|
|
'colorful',
|
|
'avid',
|
|
'active',
|
|
'gentle',
|
|
'happy',
|
|
'intelligent',
|
|
'jolly',
|
|
'kind',
|
|
'lively',
|
|
'merry',
|
|
'nice',
|
|
'optimistic',
|
|
'polite',
|
|
'quiet',
|
|
'relaxed',
|
|
'silly',
|
|
'witty',
|
|
'young',
|
|
'strong',
|
|
'brave',
|
|
'agile',
|
|
'bold',
|
|
'confident',
|
|
'daring',
|
|
'fearless',
|
|
'heroic',
|
|
'mighty',
|
|
'powerful',
|
|
'valiant',
|
|
'wise',
|
|
'wonderful',
|
|
'zealous',
|
|
'warm',
|
|
'swift',
|
|
'neat',
|
|
'tidy',
|
|
'nifty',
|
|
'lucky',
|
|
'keen',
|
|
'blue',
|
|
'red',
|
|
'aqua',
|
|
'green',
|
|
'orange',
|
|
'pink',
|
|
'purple',
|
|
'cyan',
|
|
'magenta',
|
|
'lime',
|
|
'teal',
|
|
'lavender',
|
|
'beige',
|
|
'maroon',
|
|
'navy',
|
|
'olive',
|
|
'silver',
|
|
'gold',
|
|
'ivory',
|
|
];
|
|
|
|
const nouns = [
|
|
'street',
|
|
'roof',
|
|
'floor',
|
|
'tv',
|
|
'idea',
|
|
'morning',
|
|
'game',
|
|
'wheel',
|
|
'bag',
|
|
'clock',
|
|
'pencil',
|
|
'pen',
|
|
'magnet',
|
|
'chair',
|
|
'table',
|
|
'house',
|
|
'room',
|
|
'book',
|
|
'car',
|
|
'tree',
|
|
'candle',
|
|
'light',
|
|
'planet',
|
|
'flower',
|
|
'bird',
|
|
'fish',
|
|
'sun',
|
|
'moon',
|
|
'star',
|
|
'cloud',
|
|
'rain',
|
|
'snow',
|
|
'wind',
|
|
'mountain',
|
|
'river',
|
|
'lake',
|
|
'sea',
|
|
'ocean',
|
|
'island',
|
|
'bridge',
|
|
'road',
|
|
'train',
|
|
'plane',
|
|
'ship',
|
|
'bicycle',
|
|
'circle',
|
|
'square',
|
|
'garden',
|
|
'harp',
|
|
'grass',
|
|
'forest',
|
|
'rock',
|
|
'cake',
|
|
'pie',
|
|
'cookie',
|
|
'candy',
|
|
'butterfly',
|
|
'computer',
|
|
'phone',
|
|
'keyboard',
|
|
'mouse',
|
|
'cup',
|
|
'plate',
|
|
'glass',
|
|
'door',
|
|
'window',
|
|
'key',
|
|
'wallet',
|
|
'pillow',
|
|
'bed',
|
|
'blanket',
|
|
'soap',
|
|
'towel',
|
|
'lamp',
|
|
'mirror',
|
|
'camera',
|
|
'hat',
|
|
'shirt',
|
|
'pants',
|
|
'shoes',
|
|
'watch',
|
|
'ring',
|
|
'necklace',
|
|
'ball',
|
|
'toy',
|
|
'doll',
|
|
'kite',
|
|
'balloon',
|
|
'guitar',
|
|
'violin',
|
|
'piano',
|
|
'drum',
|
|
'trumpet',
|
|
'flute',
|
|
'viola',
|
|
'cello',
|
|
'harp',
|
|
'banjo',
|
|
'tuba',
|
|
];
|
|
|
|
const randomItem = (arr, random) =>
|
|
arr[Math.floor((random ?? Math.random)() * arr.length)];
|
|
|
|
/**
|
|
* A function that generates a unique identifier by combining a random adjective, a random noun, and a random number (between 0 and 9999).
|
|
* The result is returned as a string with components separated by the specified separator.
|
|
* It is useful when you need to create unique identifiers that are also human-friendly.
|
|
*
|
|
* @param {string} [separator='_'] - The character used to separate the adjective, noun, and number. Defaults to '_' if not provided.
|
|
* @returns {string} A unique, human-friendly identifier.
|
|
*
|
|
* @example
|
|
*
|
|
* let identifier = window.generate_identifier();
|
|
* // identifier would be something like 'clever-idea-123'
|
|
*
|
|
*/
|
|
function generate_identifier(separator = '_', rng = Math.random) {
|
|
// return a random combination of first_adj + noun + number (between 0 and 9999)
|
|
// e.g. clever-idea-123
|
|
return [
|
|
randomItem(adjectives, rng),
|
|
randomItem(nouns, rng),
|
|
Math.floor(rng() * 10000),
|
|
].join(separator);
|
|
}
|
|
|
|
const HUMAN_READABLE_CASE_INSENSITIVE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
|
|
function generate_random_code(
|
|
n,
|
|
{ rng = Math.random, chars = HUMAN_READABLE_CASE_INSENSITIVE } = {},
|
|
) {
|
|
let code = '';
|
|
for (let i = 0; i < n; i++) {
|
|
code += randomItem(chars, rng);
|
|
}
|
|
return code;
|
|
}
|
|
|
|
module.exports = {
|
|
generate_identifier,
|
|
generate_random_code,
|
|
};
|