@stacksjs/utils 0.61.24 → 0.63.0
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/dist/index.js +28 -70
- package/dist/index.js.map +37 -0
- package/package.json +13 -12
- package/src/clean.ts +1 -1
- package/src/hash.ts +13 -3
- package/src/index.ts +0 -1
- package/src/currency.ts +0 -29
package/dist/index.js
CHANGED
|
@@ -6,8 +6,8 @@ async function loop(times, callback) {
|
|
|
6
6
|
}
|
|
7
7
|
// src/clean.ts
|
|
8
8
|
import {path as p} from "@stacksjs/path";
|
|
9
|
-
var {$ } = globalThis.Bun;
|
|
10
9
|
async function cleanProject() {
|
|
10
|
+
const $ = Bun.$;
|
|
11
11
|
await $`rm -rf ${p.projectPath("bun.lockb")}`;
|
|
12
12
|
await $`rm -rf ${p.projectPath("yarn.lock")}`;
|
|
13
13
|
await $`rm -rf ${p.projectPath("node_modules/")}`;
|
|
@@ -45,35 +45,6 @@ defineServices,
|
|
|
45
45
|
defineStorage,
|
|
46
46
|
defineUi
|
|
47
47
|
} from "@stacksjs/config";
|
|
48
|
-
// src/currency.ts
|
|
49
|
-
import {
|
|
50
|
-
add,
|
|
51
|
-
allocate,
|
|
52
|
-
compare,
|
|
53
|
-
convert,
|
|
54
|
-
equal,
|
|
55
|
-
greaterThan,
|
|
56
|
-
greaterThanOrEqual,
|
|
57
|
-
hasSubUnits,
|
|
58
|
-
isZero,
|
|
59
|
-
lessThan,
|
|
60
|
-
lessThanOrEqual,
|
|
61
|
-
maximum,
|
|
62
|
-
minimum,
|
|
63
|
-
multiply,
|
|
64
|
-
normalizeScale,
|
|
65
|
-
dinero,
|
|
66
|
-
dinero as dinero2,
|
|
67
|
-
subtract,
|
|
68
|
-
toSnapshot,
|
|
69
|
-
toUnits,
|
|
70
|
-
toDecimal,
|
|
71
|
-
trimScale,
|
|
72
|
-
haveSameCurrency,
|
|
73
|
-
haveSameAmount,
|
|
74
|
-
dinero as dinero3
|
|
75
|
-
} from "dinero.js";
|
|
76
|
-
import {USD} from "@dinero.js/currencies";
|
|
77
48
|
// src/debounce.ts
|
|
78
49
|
import {debounce} from "perfect-debounce";
|
|
79
50
|
// src/equal.ts
|
|
@@ -216,12 +187,22 @@ function originRequestFunctionHash() {
|
|
|
216
187
|
}
|
|
217
188
|
}
|
|
218
189
|
function websiteSourceHash() {
|
|
219
|
-
const docsSrc = [p2.projectPath("docs")
|
|
190
|
+
const docsSrc = [p2.projectPath("docs")];
|
|
220
191
|
const websiteSrc = [
|
|
221
|
-
p2.projectPath("resources/views")
|
|
192
|
+
p2.projectPath("resources/views"),
|
|
193
|
+
p2.projectPath("resources/assets"),
|
|
194
|
+
p2.projectPath("resources/lang"),
|
|
195
|
+
p2.projectPath("resources/functions"),
|
|
196
|
+
p2.projectPath("resources/components"),
|
|
197
|
+
p2.projectPath("resources/modules"),
|
|
198
|
+
p2.projectPath("resources/stores")
|
|
222
199
|
];
|
|
223
200
|
return config2.app.docMode === true ? hashPaths(docsSrc) : hashPaths(websiteSrc);
|
|
224
201
|
}
|
|
202
|
+
function docsSourceHash() {
|
|
203
|
+
const docsSrc = [p2.projectPath("docs")];
|
|
204
|
+
return hashPaths(docsSrc);
|
|
205
|
+
}
|
|
225
206
|
// ../actions/src/dev/index.ts
|
|
226
207
|
import {Action} from "@stacksjs/enums";
|
|
227
208
|
import {log as log4} from "@stacksjs/logging";
|
|
@@ -232,9 +213,8 @@ import {err} from "@stacksjs/error-handling";
|
|
|
232
213
|
import {log as log3} from "@stacksjs/logging";
|
|
233
214
|
import * as p3 from "@stacksjs/path";
|
|
234
215
|
import {glob} from "@stacksjs/storage";
|
|
235
|
-
var {Glob } = globalThis.Bun;
|
|
236
216
|
async function runAction(action, options) {
|
|
237
|
-
const glob2 = new Glob("**/*.ts");
|
|
217
|
+
const glob2 = new Bun.Glob("**/*.ts");
|
|
238
218
|
const scanOptions = { cwd: p3.userActionsPath(), onlyFiles: true };
|
|
239
219
|
for await (const file of glob2.scan(scanOptions)) {
|
|
240
220
|
log3.debug("file", file);
|
|
@@ -281,10 +261,10 @@ import {app, ui} from "@stacksjs/config";
|
|
|
281
261
|
import {Action as Action3} from "@stacksjs/enums";
|
|
282
262
|
import {err as err2, handleError, ok} from "@stacksjs/error-handling";
|
|
283
263
|
import {frameworkPath as frameworkPath3, projectPath as projectPath4} from "@stacksjs/path";
|
|
284
|
-
import * as
|
|
264
|
+
import * as storage5 from "@stacksjs/storage";
|
|
285
265
|
import {parse} from "yaml";
|
|
286
266
|
async function packageManager() {
|
|
287
|
-
const { packageManager: packageManager2 } = await
|
|
267
|
+
const { packageManager: packageManager2 } = await storage5.readPackageJson(frameworkPath3("package.json"));
|
|
288
268
|
return packageManager2;
|
|
289
269
|
}
|
|
290
270
|
async function initProject() {
|
|
@@ -299,9 +279,9 @@ async function initProject() {
|
|
|
299
279
|
return ok(result.value);
|
|
300
280
|
}
|
|
301
281
|
async function ensureProjectIsInitialized() {
|
|
302
|
-
if (
|
|
282
|
+
if (storage5.isFile(projectPath4(".env")))
|
|
303
283
|
return await isAppKeySet();
|
|
304
|
-
if (
|
|
284
|
+
if (storage5.isFile(projectPath4(".env.example")))
|
|
305
285
|
await runCommand3("cp .env.example .env", { cwd: projectPath4() });
|
|
306
286
|
else
|
|
307
287
|
console.error("no .env.example file found");
|
|
@@ -310,10 +290,10 @@ async function ensureProjectIsInitialized() {
|
|
|
310
290
|
async function installIfVersionMismatch() {
|
|
311
291
|
}
|
|
312
292
|
async function frameworkVersion() {
|
|
313
|
-
return (await
|
|
293
|
+
return (await storage5.readPackageJson(frameworkPath3("package.json"))).version;
|
|
314
294
|
}
|
|
315
295
|
async function isAppKeySet() {
|
|
316
|
-
const env = await
|
|
296
|
+
const env = await storage5.readTextFile(".env", projectPath4());
|
|
317
297
|
const lines = env.data.split("\n");
|
|
318
298
|
const appKey = lines.find((line) => line.startsWith("APP_KEY="));
|
|
319
299
|
return !!(appKey && appKey.length > 16);
|
|
@@ -341,14 +321,14 @@ function isOptionalString(value) {
|
|
|
341
321
|
return value === null || type === "undefined" || type === "string";
|
|
342
322
|
}
|
|
343
323
|
async function setEnvValue(key, value) {
|
|
344
|
-
const file = await
|
|
345
|
-
await
|
|
324
|
+
const file = await storage5.readTextFile(projectPath4(".env"));
|
|
325
|
+
await storage5.writeTextFile({
|
|
346
326
|
path: projectPath4(".env"),
|
|
347
327
|
data: file.data.replace(/APP_KEY=/g, `APP_KEY=${value}`)
|
|
348
328
|
});
|
|
349
329
|
}
|
|
350
330
|
async function runNpmScript(script, options) {
|
|
351
|
-
const { data: manifest } = await
|
|
331
|
+
const { data: manifest } = await storage5.readJsonFile("package.json", frameworkPath3());
|
|
352
332
|
if (isManifest(manifest) && hasScript(manifest, script))
|
|
353
333
|
return await runCommand3(`bun --bun run ${script}`, options);
|
|
354
334
|
return err2(handleError(`The ${script} script does not exist in the package.json file.`));
|
|
@@ -907,7 +887,7 @@ function prettyBytes(number, options) {
|
|
|
907
887
|
return prefix + numberString + separator + unit;
|
|
908
888
|
}
|
|
909
889
|
// package.json
|
|
910
|
-
var version = "0.
|
|
890
|
+
var version = "0.63.0";
|
|
911
891
|
export {
|
|
912
892
|
wordChar,
|
|
913
893
|
wordBoundary,
|
|
@@ -1104,12 +1084,8 @@ export {
|
|
|
1104
1084
|
tryOnMounted,
|
|
1105
1085
|
tryOnBeforeUnmount,
|
|
1106
1086
|
tryOnBeforeMount,
|
|
1107
|
-
trimScale,
|
|
1108
|
-
toUnits,
|
|
1109
1087
|
toString,
|
|
1110
|
-
toSnapshot,
|
|
1111
1088
|
toReactive,
|
|
1112
|
-
toDecimal,
|
|
1113
1089
|
throttledWatch,
|
|
1114
1090
|
throttledRef,
|
|
1115
1091
|
throttle,
|
|
@@ -1118,7 +1094,6 @@ export {
|
|
|
1118
1094
|
tab,
|
|
1119
1095
|
syncRefs,
|
|
1120
1096
|
syncRef,
|
|
1121
|
-
subtract,
|
|
1122
1097
|
sticky,
|
|
1123
1098
|
sleep,
|
|
1124
1099
|
setSSRHandler,
|
|
@@ -1157,14 +1132,9 @@ export {
|
|
|
1157
1132
|
notUndefined,
|
|
1158
1133
|
notNullish,
|
|
1159
1134
|
not,
|
|
1160
|
-
normalizeScale,
|
|
1161
1135
|
noNull,
|
|
1162
|
-
multiply,
|
|
1163
1136
|
multiline,
|
|
1164
|
-
dinero2 as money,
|
|
1165
|
-
minimum,
|
|
1166
1137
|
maybe,
|
|
1167
|
-
maximum,
|
|
1168
1138
|
mapGamepadToXbox360Controller,
|
|
1169
1139
|
makeDestructurable,
|
|
1170
1140
|
loop,
|
|
@@ -1173,9 +1143,6 @@ export {
|
|
|
1173
1143
|
load as loadYaml,
|
|
1174
1144
|
linefeed,
|
|
1175
1145
|
letter,
|
|
1176
|
-
lessThanOrEqual,
|
|
1177
|
-
lessThan,
|
|
1178
|
-
isZero,
|
|
1179
1146
|
isTruthy,
|
|
1180
1147
|
isOptionalString,
|
|
1181
1148
|
isManifest,
|
|
@@ -1188,12 +1155,7 @@ export {
|
|
|
1188
1155
|
injectLocal,
|
|
1189
1156
|
initProject,
|
|
1190
1157
|
ignorableWatch,
|
|
1191
|
-
haveSameCurrency,
|
|
1192
|
-
haveSameAmount,
|
|
1193
|
-
hasSubUnits,
|
|
1194
1158
|
hasScript,
|
|
1195
|
-
greaterThanOrEqual,
|
|
1196
|
-
greaterThan,
|
|
1197
1159
|
global,
|
|
1198
1160
|
getSSRHandler,
|
|
1199
1161
|
getExportsSize,
|
|
@@ -1203,12 +1165,11 @@ export {
|
|
|
1203
1165
|
extendRef,
|
|
1204
1166
|
executeTransition,
|
|
1205
1167
|
exactly,
|
|
1206
|
-
equal,
|
|
1207
1168
|
ensureProjectIsInitialized,
|
|
1208
1169
|
eagerComputed,
|
|
1209
1170
|
dump as dumpYaml,
|
|
1210
1171
|
dotAll,
|
|
1211
|
-
|
|
1172
|
+
docsSourceHash,
|
|
1212
1173
|
digit,
|
|
1213
1174
|
determineResetPreset,
|
|
1214
1175
|
determineDebugLevel,
|
|
@@ -1244,7 +1205,6 @@ export {
|
|
|
1244
1205
|
debouncedRef,
|
|
1245
1206
|
debounce,
|
|
1246
1207
|
customStorageEventName,
|
|
1247
|
-
dinero3 as currency,
|
|
1248
1208
|
createUnrefFn,
|
|
1249
1209
|
createTemplatePromise,
|
|
1250
1210
|
createSingletonPromise,
|
|
@@ -1261,14 +1221,12 @@ export {
|
|
|
1261
1221
|
createFetch,
|
|
1262
1222
|
createEventHook,
|
|
1263
1223
|
createControlledPromise,
|
|
1264
|
-
convert,
|
|
1265
1224
|
controlledRef,
|
|
1266
1225
|
controlledComputed,
|
|
1267
1226
|
computedWithControl,
|
|
1268
1227
|
computedInject,
|
|
1269
1228
|
computedEager,
|
|
1270
1229
|
computedAsync,
|
|
1271
|
-
compare,
|
|
1272
1230
|
cloneFnJSON,
|
|
1273
1231
|
cleanProject,
|
|
1274
1232
|
clamp,
|
|
@@ -1290,10 +1248,10 @@ export {
|
|
|
1290
1248
|
asyncComputed,
|
|
1291
1249
|
anyOf,
|
|
1292
1250
|
and,
|
|
1293
|
-
allocate,
|
|
1294
|
-
add,
|
|
1295
|
-
USD,
|
|
1296
1251
|
Macroable,
|
|
1297
1252
|
HeadVuePlugin,
|
|
1298
1253
|
Head
|
|
1299
1254
|
};
|
|
1255
|
+
|
|
1256
|
+
//# debugId=E32011EB197DC57D64756E2164756E21
|
|
1257
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/base.ts", "../src/clean.ts", "../src/config.ts", "../src/debounce.ts", "../src/equal.ts", "../src/export-size.ts", "../src/find.ts", "../src/function.ts", "../src/git.ts", "../src/guards.ts", "../src/hash.ts", "../../actions/src/dev/index.ts", "../../actions/src/helpers/utils.ts", "../../actions/src/generate/index.ts", "../../actions/src/helpers/vscode-custom-data.ts", "../../actions/src/commit.ts", "../../actions/src/add.ts", "../../actions/src/make.ts", "../src/helpers.ts", "../src/macroable.ts", "../src/math.ts", "../src/promise.ts", "../src/regex.ts", "../src/retry.ts", "../src/sleep.ts", "../src/throttle.ts", "../src/vendors.ts", "../../../../../node_modules/pretty-bytes/index.js"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export { toString } from '@stacksjs/strings'\n\n// export function assert(condition: boolean, message: string): asserts condition {\n// if (!condition)\n// throw new Error(message)\n// }\n\n// export function noop() {}\n\nexport async function loop(times: number, callback: any) {\n ;[...Array(times)].forEach(async (item, i) => await callback(i))\n}\n",
|
|
6
|
+
"import { path as p } from '@stacksjs/path'\n\nexport async function cleanProject() {\n const $ = Bun.$\n await $`rm -rf ${p.projectPath('bun.lockb')}`\n await $`rm -rf ${p.projectPath('yarn.lock')}` // just in case\n await $`rm -rf ${p.projectPath('node_modules/')}`\n await $`rm -rf ${p.frameworkPath('dist')}`\n await $`rm -rf ${p.frameworkPath('node_modules')}`\n await $`rm -rf ${p.frameworkPath('**/dist')}`\n await $`rm -rf ${p.frameworkPath('**/node_modules')}`\n await $`rm -rf ${p.frameworkCloudPath('cdk.out/')}`\n await $`rm -rf ${p.frameworkCloudPath('cdk.context.json')}`\n await $`rm -rf ${p.frameworkCloudPath('dist.zip')}`\n}\n",
|
|
7
|
+
"export {\n defineApp,\n defineCache,\n defineCli,\n defineCdn,\n defineCronJob,\n defineJob,\n defineDependencies,\n defineDatabase,\n defineDns,\n defineEmailConfig,\n defineGit,\n defineHashing,\n defineLibrary,\n defineNotification,\n defineSms,\n defineEmail,\n defineChat,\n definePayment,\n defineQueue,\n defineSearchEngine,\n defineServices,\n defineStorage,\n defineUi,\n} from '@stacksjs/config'\n",
|
|
8
|
+
"export { debounce } from 'perfect-debounce'\n",
|
|
9
|
+
"import { getTypeName } from '@stacksjs/types'\n\nexport function isDeepEqual(value1: any, value2: any): boolean {\n const type1 = getTypeName(value1)\n const type2 = getTypeName(value2)\n if (type1 !== type2) return false\n\n if (type1 === 'array') {\n if (value1.length !== value2.length) return false\n\n return value1.every((item: any, i: number) => {\n return isDeepEqual(item, value2[i])\n })\n }\n if (type1 === 'object') {\n const keyArr = Object.keys(value1)\n if (keyArr.length !== Object.keys(value2).length) return false\n\n return keyArr.every((key: string) => {\n return isDeepEqual(value1[key], value2[key])\n })\n }\n return Object.is(value1, value2)\n}\n",
|
|
10
|
+
"export { getExportsSize } from 'export-size'\n",
|
|
11
|
+
"import type { Dirent } from 'node:fs'\nimport fs from 'node:fs/promises'\nimport os from 'node:os'\nimport path from 'node:path'\nimport { italic } from '@stacksjs/cli'\nimport { log } from '@stacksjs/logging'\n\nconst targetFileName = 'buddy' // The exact name of the target file\n\nconst excludePatterns = [\n 'node_modules',\n 'dist',\n 'vendor',\n `${os.homedir()}/Documents`,\n `${os.homedir()}/Pictures`,\n `${os.homedir()}/Library`,\n `${os.homedir()}/.Trash`,\n /.*out.*|.*\\.out.*|out-.*/, // exclude any folder with 'out' in the name\n /.*\\/\\..*/, // exclude any folder that starts with a dot\n]\n\ninterface FindStacksProjectsOptions {\n quiet?: boolean\n}\n\nexport async function findStacksProjects(dir?: string, options?: FindStacksProjectsOptions): Promise<string[]> {\n dir = dir || os.homedir()\n\n if (!options?.quiet) {\n log.info(`Searching for Stacks projects in: ${italic(dir)}`)\n log.info(`This may take a few moments...`)\n console.log('')\n console.log(italic(' Please note, while Stacks is searching for projects on your machine,'))\n console.log(italic(' you may be asked for permissions to scan certain directories.'))\n console.log('')\n log.debug(`Excluding directories: ${excludePatterns.join(', ')}`)\n }\n\n const foundProjects = await searchDirectory(dir)\n\n if (!foundProjects) throw new Error('No Stacks projects found')\n\n return foundProjects\n}\n\nasync function searchDirectory(directory: string) {\n const foundProjects: string[] = []\n\n const isExcluded = excludePatterns.some((pattern) =>\n typeof pattern === 'string' ? directory.includes(pattern) : pattern.test(directory),\n )\n if (isExcluded) return\n\n let items: Dirent[]\n try {\n items = await fs.readdir(directory, { withFileTypes: true })\n } catch (error) {\n console.error(`Error reading directory ${directory}:`, error)\n return\n }\n\n let buddyFileFound = false\n let storageDirFound = false\n\n for (const item of items) {\n if (item.isFile() && item.name === targetFileName) {\n buddyFileFound = true\n } else if (item.isDirectory()) {\n // Recursively search in directories\n const fullPath = path.join(directory, item.name)\n if (item.name === 'storage') {\n // Check if the 'storage/framework/core/buddy/' structure exists within this directory\n try {\n const storagePath = path.join(fullPath, 'framework/core/buddy')\n await fs.access(storagePath)\n storageDirFound = true\n } catch (error) {\n // The specific directory structure does not exist\n }\n }\n await searchDirectory(fullPath)\n }\n }\n\n if (buddyFileFound && storageDirFound) foundProjects.push(directory) // Both conditions are met\n\n return foundProjects\n}\n",
|
|
12
|
+
"import type { Fn, Nullable } from '@stacksjs/types'\n\n/**\n * Call every function in an array\n */\nexport function batchInvoke(functions: Nullable<Fn>[]) {\n functions.forEach((fn) => fn?.())\n}\n\n// /**\n// * Call the function\n// */\n// export function invoke(fn: Fn) {\n// return fn()\n// }\n\n/**\n * Pass the value through the callback, and return the value\n *\n * @example\n * ```\n * function createUser(name: string): User {\n * return tap(new User, user => {\n * user.name = name\n * })\n * }\n * ```\n */\nexport function tap<T>(value: T, callback: (value: T) => void): T {\n callback(value)\n return value\n}\n",
|
|
13
|
+
"import { execSync } from 'node:child_process'\n\nexport function isGitClean() {\n try {\n execSync('git diff-index --quiet HEAD --')\n return true\n } catch (error) {\n return false\n }\n}\n",
|
|
14
|
+
"/**\n * Type guard to filter out null-ish values\n *\n * @category Guards\n * @example array.filter(notNullish)\n */\nexport function notNullish<T>(v: T | null | undefined): v is NonNullable<T> {\n return v != null\n}\n\n/**\n * Type guard to filter out null values\n *\n * @category Guards\n * @example array.filter(noNull)\n */\nexport function noNull<T>(v: T | null): v is Exclude<T, null> {\n return v !== null\n}\n\n/**\n * Type guard to filter out null-ish values\n *\n * @category Guards\n * @example array.filter(notUndefined)\n */\nexport function notUndefined<T>(v: T): v is Exclude<T, undefined> {\n return v !== undefined\n}\n\n/**\n * Type guard to filter out falsy values\n *\n * @category Guards\n * @example array.filter(isTruthy)\n */\nexport function isTruthy<T>(v: T): v is NonNullable<T> {\n return Boolean(v)\n}\n",
|
|
15
|
+
"import { config } from '@stacksjs/config'\nimport { log } from '@stacksjs/logging'\nimport { path as p } from '@stacksjs/path'\nimport { hashPaths } from '@stacksjs/storage'\n\nexport function originRequestFunctionHash() {\n try {\n return hashPaths(p.cloudPath('src/edge'))\n } catch (error: any) {\n log.error('Are we in a Docker container? Failed to hash paths. Error below:')\n log.error(error)\n return undefined\n }\n}\n\nexport function websiteSourceHash() {\n const docsSrc = [p.projectPath('docs')]\n const websiteSrc = [\n p.projectPath('resources/views'),\n p.projectPath('resources/assets'),\n p.projectPath('resources/lang'),\n p.projectPath('resources/functions'),\n p.projectPath('resources/components'),\n p.projectPath('resources/modules'),\n p.projectPath('resources/stores'),\n ]\n\n return config.app.docMode === true ? hashPaths(docsSrc) : hashPaths(websiteSrc)\n}\n\nexport function docsSourceHash() {\n const docsSrc = [p.projectPath('docs')]\n\n return hashPaths(docsSrc)\n}\n",
|
|
16
|
+
"import { Action } from '@stacksjs/enums'\nimport { log } from '@stacksjs/logging'\nimport type { DevOptions } from '@stacksjs/types'\nimport { runAction } from '../helpers'\n\nexport async function runDevServer(options: DevOptions) {\n log.info('Starting your Frontend Engine...')\n await runAction(Action.Dev, options)\n}\n\nexport async function runFrontendDevServer(options: DevOptions) {\n log.info('Starting your UI Engine...')\n await runAction(Action.Dev, options)\n}\n\nexport async function runBackendDevServer(options: DevOptions) {\n runApiDevServer(options)\n}\n\nexport async function runApiDevServer(options: DevOptions) {\n log.info('Starting your API...')\n await runAction(Action.DevApi, options)\n}\n\nexport async function runComponentsDevServer(options: DevOptions) {\n log.info('Starting your Library Engine...')\n await runAction(Action.DevComponents, options)\n}\n\nexport async function runDashboardDevServer(options: DevOptions) {\n log.info('Starting your Dashboard...')\n await runAction(Action.DevDashboard, options)\n}\n\nexport async function runSystemTrayDevServer(options: DevOptions) {\n log.info('Starting your System Tray...')\n await runAction(Action.DevSystemTray, options)\n}\n\nexport async function runDesktopDevServer(options: DevOptions) {\n log.info('Starting your Desktop Engine...')\n await runAction(Action.DevDesktop, options)\n}\n\nexport async function runDocsDevServer(options: DevOptions) {\n log.info('Starting your Docs Engine...')\n await runAction(Action.DevDocs, options)\n}\n",
|
|
17
|
+
"import type { Action as ActionType } from '@stacksjs/actions'\nimport { buddyOptions, runCommand, runCommands } from '@stacksjs/cli'\nimport { err } from '@stacksjs/error-handling'\nimport { log } from '@stacksjs/logging'\nimport * as p from '@stacksjs/path'\nimport { glob } from '@stacksjs/storage'\nimport type { ActionOptions } from '@stacksjs/types'\n\ntype ActionPath = string // TODO: narrow this by automating its generation\ntype ActionName = string // TODO: narrow this by automating its generation\ntype Action = ActionPath | ActionName | string\n\n/**\n * Run an Action the Stacks way.\n *\n * @param action The action to invoke.\n * @param options The options to pass to the command.\n * @returns The result of the command.\n */\nexport async function runAction(action: Action, options?: ActionOptions) {\n // check if action is a file anywhere in ./app/Actions/**/*.ts\n // if it is, return and await the action\n const glob = new Bun.Glob('**/*.ts')\n const scanOptions = { cwd: p.userActionsPath(), onlyFiles: true }\n\n for await (const file of glob.scan(scanOptions)) {\n log.debug('file', file)\n if (file === `${action}.ts` || file.endsWith(`${action}.ts`))\n return ((await import(/* @vite-ignore */ p.userActionsPath(file))).default as ActionType).handle()\n\n // if a custom model name is used, we need to check for it\n const a = await import(/* @vite-ignore */ p.userActionsPath(file))\n if (a.name === action) return await a.handle()\n }\n\n // or else, just run the action normally by assuming the action is core Action, stored in p.actionsPath\n const opts = buddyOptions()\n const path = p.relativeActionsPath(`src/${action}.ts`)\n const cmd = `bun --bun ${path} ${opts}`.trimEnd()\n const optionsWithCwd = {\n cwd: options?.cwd || p.projectPath(),\n ...options,\n }\n\n log.debug('runAction:', cmd)\n log.debug('action options:', optionsWithCwd)\n\n return await runCommand(cmd, optionsWithCwd)\n}\n\n/**\n * Run Actions the Stacks way.\n *\n * @param actions The actions to invoke.\n * @param options The options to pass to the command.\n * @returns The result of the command.\n */\nexport async function runActions(actions: Action[], options?: ActionOptions) {\n log.debug('runActions:', actions, options)\n\n if (!actions.length) return err('No actions were specified')\n\n for (const action of actions) {\n log.debug(`running action \"${action}\"`)\n if (!hasAction(action)) return err(`The specified action \"${action}\" does not exist`)\n }\n\n const opts = buddyOptions()\n\n const o = {\n cwd: options?.cwd || p.projectPath(),\n ...options,\n }\n\n const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`src/${action}.ts`)} ${opts}`)\n\n log.debug('commands:', commands)\n\n return await runCommands(commands, o)\n}\n\n// looks in most common locations\nexport function hasAction(action: Action) {\n // Define patterns specifically for user actions\n const userActionPatterns = [\n `${action}.ts`,\n `${action}`,\n `Dashboard/${action}.ts`,\n `Dashboard/${action}`,\n `Buddy/${action}.ts`,\n `Buddy/${action}`,\n ]\n\n // Define patterns specifically for core actions\n const actionPatterns = [`src/${action}.ts`, `src/${action}`, `${action}.ts`, `${action}`]\n\n // Check user actions path with its specific patterns\n const userActionFiles = glob.sync(userActionPatterns.map((pattern) => p.userActionsPath(pattern)))\n\n // Check actions path with its specific patterns\n const actionFiles = glob.sync(actionPatterns.map((pattern) => p.actionsPath(pattern)))\n\n return userActionFiles.length > 0 || actionFiles.length > 0\n\n // TODO: need to loop through all user actions and check whether the name is a valid action name match\n\n // return false\n}\n",
|
|
18
|
+
"import process from 'node:process'\nimport { runCommand } from '@stacksjs/cli'\nimport { Action, NpmScript } from '@stacksjs/enums'\nimport { log } from '@stacksjs/logging'\nimport { frameworkPath, projectPath } from '@stacksjs/path'\nimport type { GeneratorOptions } from '@stacksjs/types'\nimport { runNpmScript } from '@stacksjs/utils'\nimport { runAction } from '../helpers'\nimport { generateVsCodeCustomData as genVsCodeCustomData } from '../helpers/vscode-custom-data'\n\n// import { files } from '@stacksjs/storage'\n\nexport async function invoke(options?: GeneratorOptions) {\n if (options?.types) await generateTypes(options)\n else if (options?.entries) await generateLibEntries(options)\n else if (options?.webTypes) await generateWebTypes(options)\n else if (options?.customData) await generateVsCodeCustomData(options)\n else if (options?.ideHelpers) await generateIdeHelpers(options)\n else if (options?.componentMeta) await generateComponentMeta(options)\n else if (options?.coreSymlink) await generateCoreSymlink()\n}\n\nexport function generate(options: GeneratorOptions) {\n return invoke(options)\n}\n\nexport async function generateLibEntries(options: GeneratorOptions) {\n const result = await runAction(Action.GenerateLibraryEntries, {\n ...options,\n cwd: projectPath(),\n })\n\n if (result.isErr()) {\n log.error('There was an error generating your library entry points', result.error)\n process.exit()\n }\n\n log.success('Library entry points generated successfully')\n}\n\nexport async function generateWebTypes(options?: GeneratorOptions) {\n const result = await runNpmScript(NpmScript.GenerateWebTypes, options)\n\n if (result.isErr()) {\n log.error('There was an error generating the web-types.json file.', result.error)\n process.exit()\n }\n\n log.success('Successfully generated the web-types.json file')\n}\n\nexport async function generateVsCodeCustomData(options?: GeneratorOptions) {\n const result = await genVsCodeCustomData()\n\n if (result.isErr()) {\n log.error('There was an error generating the custom-elements.json file.', result.error)\n process.exit()\n }\n\n await runAction(Action.LintFix, { verbose: true }) // because the generated json file needs to be linted\n\n log.success('Successfully generated the custom-elements.json file')\n}\n\nexport async function generateIdeHelpers(options?: GeneratorOptions) {\n const result = await runNpmScript(NpmScript.GenerateIdeHelpers, options)\n\n if (result.isErr()) {\n log.error('There was an error generating IDE helpers.', result.error)\n process.exit()\n }\n\n await runAction(Action.LintFix, { verbose: true }) // the generated json file needs to be linted\n log.success('Successfully generated IDE helpers')\n}\n\nexport async function generateComponentMeta(options?: GeneratorOptions) {\n const result = await genVsCodeCustomData()\n\n if (result.isErr()) {\n log.error('There was an error generating your component meta information.', result.error)\n process.exit()\n }\n\n await runAction(Action.LintFix, { verbose: true }) // the generated json file needs to be linted\n log.success('Successfully generated component meta information')\n}\n\nexport async function generateTypes(options?: GeneratorOptions) {\n const result = await runNpmScript(NpmScript.GenerateTypes, {\n cwd: frameworkPath(),\n ...options,\n })\n\n if (result.isErr()) {\n log.error('There was an error generating your types.', result.error)\n process.exit()\n }\n\n log.success('Types were generated successfully')\n}\n\nexport function generatePkgxConfig() {\n // write the yaml string to a file in your project root\n // files.put(projectPath('./pkgx.yaml'), yamlStr)\n\n log.success('Successfully generated `./pkgx.yaml` based on your config')\n}\n\nexport async function generateSeeder() {\n // await seed()\n}\n\nexport async function generateCoreSymlink() {\n await runCommand(`ln -s ${frameworkPath()} ${projectPath('.stacks')}`)\n}\n",
|
|
19
|
+
"import { log } from '@stacksjs/logging'\nimport { customElementsDataPath } from '@stacksjs/path'\nimport { writeTextFile } from '@stacksjs/storage'\nimport library from '~/config/library'\n\nexport async function generateVsCodeCustomData() {\n try {\n log.info('Generating custom-elements.json...')\n // the version does not have to be set here,\n // it will be set automatically by the release script\n await writeTextFile({\n path: customElementsDataPath(),\n data: generateComponentInfoData(),\n })\n log.success('Generated custom-elements.json for IDEs.')\n } catch (err) {\n log.error('There was an error generating the custom-elements.json file.', err)\n }\n}\n\nexport async function generateWebTypes() {\n log.info('Generating web-types.json...')\n log.info('This feature is not yet implemented.')\n}\n\nfunction generateComponentInfoData() {\n const componentsData = JSON.stringify(library.vueComponents?.tags)\n\n return `{\n \"version\": 1.1,\n \"tags\": ${componentsData}\n}\n`\n}\n",
|
|
20
|
+
"import { NpmScript } from '@stacksjs/enums'\nimport { log } from '@stacksjs/logging'\nimport type { CleanOptions } from '@stacksjs/types'\nimport { runNpmScript } from '@stacksjs/utils'\n\nexport async function invoke(options: CleanOptions) {\n log.info('Committing...')\n await runNpmScript(NpmScript.Commit, options)\n log.success('Committed')\n}\n\nexport async function commit(options: CleanOptions) {\n return invoke(options)\n}\n",
|
|
21
|
+
"import { installPackage } from '@stacksjs/cli'\nimport type { AddOptions } from '@stacksjs/types'\n\nexport async function invoke(options: AddOptions) {\n if (options?.table) await addTable()\n\n if (options?.calendar) await addCalendar()\n}\n\nexport async function add(options: AddOptions) {\n return invoke(options)\n}\n\nexport async function addTable() {\n await installPackage('@stacksjs/table')\n}\n\nexport async function addCalendar() {\n await installPackage('@stacksjs/calendar')\n}\n\nexport async function installPackages(names: string[]) {\n for (const name of names) await installPackage(name)\n}\n",
|
|
22
|
+
"import process from 'node:process'\nimport { italic } from '@stacksjs/cli'\nimport { log } from '@stacksjs/logging'\nimport { frameworkPath, path as p, projectPath, resolve } from '@stacksjs/path'\nimport { createFolder, doesFolderExist, writeTextFile } from '@stacksjs/storage'\nimport type { MakeOptions } from '@stacksjs/types'\n\nexport async function invoke(options: MakeOptions) {\n if (options.component) await makeComponent(options)\n if (options.database) makeDatabase(options)\n if (options.function) await makeFunction(options)\n if (options.language) await makeLanguage(options)\n\n // if (options.migration)\n // await migration(options)\n\n if (options.notification) await makeNotification(options)\n if (options.page) await makePage(options)\n if (options.stack) makeStack(options)\n}\n\nexport async function make(options: MakeOptions) {\n return invoke(options)\n}\n\nexport async function makeAction(options: MakeOptions) {\n try {\n const name = options.name\n log.info('Creating your action...')\n await createAction(options)\n log.success(`Created ${italic(name)} action`)\n } catch (error) {\n log.error('There was an error creating your action', error)\n process.exit()\n }\n}\n\nexport async function makeComponent(options: MakeOptions) {\n try {\n const name = options.name\n log.info('Creating your component...')\n await createComponent(options)\n log.success(`Created ${italic(name)} component`)\n } catch (error) {\n log.error('There was an error creating your component', error)\n process.exit()\n }\n}\n\nexport async function createAction(options: MakeOptions) {\n const name = options.name\n await writeTextFile({\n path: p.userActionsPath(`${name}.ts`),\n data: `import { Action } from '@stacksjs/actions'\n\nexport default new Action({\n name: '${name}',\n description: '${name} action',\n\n handle() {\n return 'Hello World action'\n },\n})\n`,\n })\n}\n\nexport async function createComponent(options: MakeOptions) {\n const name = options.name\n await writeTextFile({\n path: p.userComponentsPath(`${name}.stx`),\n data: `<script setup lang=\"ts\">\nconsole.log('Hello World component created')\n</script>\n\n<template>\n <div>\n Some HTML block\n </div>\n</template>\n`,\n })\n}\n\nexport function makeDatabase(options: MakeOptions) {\n try {\n const name = options.name\n log.info(`Creating your ${italic(name)} database...`)\n createDatabase(options)\n log.success(`Created ${italic(name)} database`)\n } catch (error) {\n log.error('There was an error creating your database', error)\n process.exit()\n }\n}\n\nexport function createDatabase(options: MakeOptions) {\n console.log('createDatabase options', options) // wip\n}\n\nexport function factory(options: MakeOptions) {\n try {\n const name = options.name\n log.info(`Creating your ${italic(name)} factory...`)\n createDatabase(options)\n log.success(`Created ${italic(name)} factory`)\n } catch (error) {\n log.error('There was an error creating your factory', error)\n process.exit()\n }\n}\n\nexport function createFactory(options: MakeOptions) {\n console.log('options', options) // wip\n}\n\nexport async function makeNotification(options: MakeOptions) {\n try {\n const name = options.name\n log.info(`Creating your ${italic(name)} notification...`)\n await createNotification(options)\n log.success(`Created ${italic(name)} notification`)\n } catch (error) {\n log.error('There was an error creating your notification', error)\n process.exit()\n }\n}\n\nexport async function makePage(options: MakeOptions) {\n try {\n const name = options.name\n log.info('Creating your page...')\n await createPage(options)\n log.success(`Created ${name} page`)\n } catch (error) {\n log.error('There was an error creating your page', error)\n process.exit()\n }\n}\n\nexport async function createPage(options: MakeOptions) {\n const name = options.name\n await writeTextFile({\n path: p.userViewsPath(`${name}.stx`),\n data: `<script setup lang=\"ts\">\nconsole.log('Hello World page created')\n</script>\n\n<template>\n <div>\n Visit http://127.0.0.1/${name}\n </div>\n</template>\n`,\n })\n}\n\nexport async function makeFunction(options: MakeOptions) {\n try {\n const name = options.name\n log.info('Creating your function...')\n await createFunction(options)\n log.success(`Created ${name} function`)\n } catch (error) {\n log.error('There was an error creating your function', error)\n process.exit()\n }\n}\n\nexport async function createFunction(options: MakeOptions) {\n const name = options.name\n await writeTextFile({\n path: p.userFunctionsPath(`${name}.ts`),\n data: `// reactive state\nconst ${name} = ref(0)\n\n// functions that mutate state and trigger updates\nfunction increment() {\n ${name}.value++\n}\n\nexport {\n ${name},\n increment,\n}\n`,\n })\n}\n\nexport async function makeLanguage(options: MakeOptions) {\n try {\n const name = options.name\n log.info('Creating your translation file...')\n await createLanguage(options)\n log.success(`Created ${name} translation file`)\n } catch (error) {\n log.error('There was an error creating your language.', error)\n process.exit()\n }\n}\n\nexport async function createLanguage(options: MakeOptions) {\n const name = options.name\n await writeTextFile({\n path: p.resourcesPath(`lang/${name}.yml`),\n data: `button:\n text: Copy\n`,\n })\n}\n\nexport function makeStack(options: MakeOptions) {\n try {\n const name = options.name\n log.info(`Creating your ${name} stack...`)\n const path = resolve(process.cwd(), name)\n\n // await spawn(`giget stacks ${path}`)\n log.success('Successfully scaffolded your project')\n log.info(`cd ${path} && bun install`)\n } catch (error) {\n log.error('There was an error creating your stack', error)\n process.exit()\n }\n}\n\nexport async function createNotification(options: MakeOptions) {\n const name = options.name\n try {\n let importOption = 'EmailOptions'\n\n if (!doesFolderExist('notifications')) await createFolder('./notifications')\n\n if (options.chat) importOption = 'ChatOptions'\n\n if (options.sms) importOption = 'SMSOptions'\n\n await writeTextFile({\n path: p.userNotificationsPath(`${name}.ts`),\n data: `import type { ${importOption} } from \\'@stacksjs/types\\'\n\nfunction content(): string {\n return 'example'\n}\n\nfunction send(): ${importOption} {\n return {\n content: content(),\n }\n}`,\n })\n\n return true\n } catch (error) {\n return false\n }\n}\n\nexport async function createMigration(options: MakeOptions) {\n const optionName = options.name\n // const table = options.tableName\n const table = 'dummy-name'\n\n if (!optionName[0]) throw new Error('options.name is required and cannot be empty')\n\n const name = optionName[0].toUpperCase() + optionName.slice(1)\n const path = frameworkPath(`database/migrations/${name}.ts`)\n\n try {\n await writeTextFile({\n path: `${path}`,\n data: `import { Kysely } from 'kysely'\n\nexport async function up(db: Kysely<any>): Promise<void> {\n await db.schema\n .createTable('${table}')\n .addColumn('id', 'integer', col => col.autoIncrement().primaryKey())\n .execute()\n}`,\n })\n\n log.success(`Successfully created your migration file at stacks/database/migrations/${name}.ts`)\n } catch (error: any) {\n log.error(error)\n }\n}\n\nexport async function createModel(options: MakeOptions) {\n const optionName = options.name\n\n if (!optionName[0]) throw new Error('options.name is required and cannot be empty')\n\n const name = optionName[0].toUpperCase() + optionName.slice(1)\n const path = p.userModelsPath(`${name}.ts`)\n\n try {\n await writeTextFile({\n path: `${path}`,\n data: `import { faker } from '@stacksjs/faker'\nimport { schema } from '@stacksjs/validation'\nimport type { Model } from '@stacksjs/types'\n\nexport default {\n name: '${name}',\n\n traits: {\n useTimestamps: true,\n\n useSeeder: {\n count: 10,\n },\n },\n\n attributes: {\n // your attributes here\n },\n} satisfies Model`,\n })\n\n log.success(`Model created: ${italic(`app/Models/${name}.ts`)}`)\n } catch (error: any) {\n log.error(error)\n }\n}\n",
|
|
23
|
+
"import type { AddressInfo } from 'node:net'\nimport { runAction } from '@stacksjs/actions'\nimport { log, runCommand } from '@stacksjs/cli'\nimport { app, ui } from '@stacksjs/config'\nimport type { NpmScript } from '@stacksjs/enums'\nimport { Action } from '@stacksjs/enums'\nimport type { Result } from '@stacksjs/error-handling'\nimport { err, handleError, ok } from '@stacksjs/error-handling'\nimport { frameworkPath, projectPath } from '@stacksjs/path'\nimport * as storage from '@stacksjs/storage'\nimport type { CliOptions, Manifest, Subprocess } from '@stacksjs/types'\nimport { parse } from 'yaml'\n\n// import { semver } from './versions'\n\nexport async function packageManager() {\n const { packageManager } = await storage.readPackageJson(frameworkPath('package.json'))\n return packageManager\n}\n\nexport async function initProject(): Promise<Result<Subprocess, Error>> {\n if (app.env !== 'production') log.info('Project not yet initialized, generating application key...')\n else handleError('Please run `buddy key:generate` to generate an application key')\n\n const result = await runAction(Action.KeyGenerate, { cwd: projectPath() })\n\n if (result.isErr()) return err(handleError(result.error))\n\n log.info('Application key generated.')\n\n return ok(result.value)\n}\n\nexport async function ensureProjectIsInitialized() {\n if (storage.isFile(projectPath('.env'))) return await isAppKeySet()\n\n // copy the .env.example file to .env\n if (storage.isFile(projectPath('.env.example'))) await runCommand('cp .env.example .env', { cwd: projectPath() })\n else console.error('no .env.example file found')\n\n return await isAppKeySet()\n}\n\nexport async function installIfVersionMismatch() {\n // const requiredBunVersion = '0.8.1'\n // const installedBunVersion = process.version\n // if (!semver.satisfies(installedBunVersion, requiredBunVersion)) {\n // log.warn(`Installed Bun version ${italic(installedBunVersion)} does not satisfy required version ${italic(requiredBunVersion)}. Adding it to your environment. One moment...`)\n // await runCommand(`tea +bun.sh${requiredBunVersion} >/dev/null 2>&1`)\n // }\n}\n\nexport async function frameworkVersion(): Promise<string> {\n return (await storage.readPackageJson(frameworkPath('package.json'))).version\n}\n\nexport async function isAppKeySet() {\n const env = await storage.readTextFile('.env', projectPath())\n const lines = env.data.split('\\n')\n const appKey = lines.find((line) => line.startsWith('APP_KEY='))\n\n return !!(appKey && appKey.length > 16)\n}\n\n/**\n * Determines the utilized reset preset.\n *\n * @url https://www.npmjs.com/package/@unocss/reset\n * @param preset\n */\nexport function determineResetPreset(preset?: string) {\n if (ui.reset) preset = ui.reset\n\n if (preset === 'tailwind') return [\"import '@unocss/reset/tailwind.css'\"]\n\n if (preset === 'normalize') return [\"import '@unocss/reset/normalize.css'\"]\n\n if (preset === 'sanitize')\n return [\"import '@unocss/reset/sanitize/sanitize.css'\", \"import '@unocss/reset/sanitize/assets.css\"]\n\n if (preset === 'eric-meyer') return [\"import '@unocss/reset/eric-meyer.css'\"]\n\n if (preset === 'antfu') return [\"import '@unocss/reset/antfu.css'\"]\n\n return []\n}\n\n/**\n * Determines whether the specified value is a package manifest.\n */\nexport function isManifest(obj: any): obj is Manifest {\n return (\n obj &&\n typeof obj === 'object' &&\n isOptionalString(obj.name) &&\n isOptionalString(obj.version) &&\n isOptionalString(obj.description)\n )\n}\n\n/**\n * Determines whether the specified value is a string, null, or undefined.\n */\nexport function isOptionalString(value: any): value is string | undefined {\n const type = typeof value\n return value === null || type === 'undefined' || type === 'string'\n}\n\nexport async function setEnvValue(key: string, value: string) {\n const file = await storage.readTextFile(projectPath('.env'))\n\n await storage.writeTextFile({\n path: projectPath('.env'),\n data: file.data.replace(/APP_KEY=/g, `APP_KEY=${value}`), // todo: do not hardcode the APP_KEY here and instead use the key parameter\n })\n}\n\n/**\n * Runs the specified NPM script in the package.json file.\n */\nexport async function runNpmScript(script: NpmScript, options?: CliOptions): Promise<Result<Subprocess, Error>> {\n const { data: manifest } = await storage.readJsonFile('package.json', frameworkPath())\n\n // simple, yet effective check to see if the script exists\n if (isManifest(manifest) && hasScript(manifest, script)) return await runCommand(`bun --bun run ${script}`, options)\n\n return err(handleError(`The ${script} script does not exist in the package.json file.`))\n}\n\n/**\n * Determines whether the specified NPM script exists in the given manifest.\n */\nexport function hasScript(manifest: Manifest, script: NpmScript): boolean {\n const scripts = manifest.scripts as Record<NpmScript, string> | undefined\n\n if (scripts && typeof scripts === 'object') return Boolean(scripts[script])\n\n return false\n}\n\nexport function parseYaml(content: any) {\n return parse(content)\n}\n\n/**\n * Determines the level of debugging.\n *\n * The debug level is determined by the following:\n * 1. The --verbose flag\n * 2. The debug property in the app configuration\n *\n * Currently, we don't support a custom debug level,\n * though, we would like to in the future.\n *\n * @param options\n */\nexport function determineDebugLevel(options?: CliOptions) {\n if (options?.verbose === true) return true\n\n return app.debug === true\n}\n\nexport function isIpv6(address: AddressInfo): boolean {\n return (\n address.family === 'IPv6' ||\n // in node >=18.0 <18.4 this was an integer value. This was changed in a minor version.\n // See: https://github.com/laravel/vite-plugin/issues/103\n\n // @ts-expect-error-next-line\n address.family === 6\n )\n}\n\nexport { dump as dumpYaml, load as loadYaml } from 'js-yaml'\n",
|
|
24
|
+
"export { Macroable } from 'macroable'\n",
|
|
25
|
+
"export const clamp = (n: number, min: number, max: number) => Math.min(max, Math.max(min, n))\n\nexport function rand(min: number, max: number) {\n min = Math.ceil(min)\n max = Math.floor(max)\n return Math.floor(Math.random() * (max - min + 1)) + min\n}\n\n// not, -> exported as well in ../regex\nexport {\n and,\n createGenericProjection,\n createProjection,\n logicNot,\n logicOr,\n or,\n useAbs,\n useAverage,\n useCeil,\n useClamp,\n useFloor,\n useMath,\n useMax,\n useMin,\n usePrecision,\n useProjection,\n useRound,\n useSum,\n useTrunc,\n} from '@vueuse/math'\n",
|
|
26
|
+
"import { remove } from '@stacksjs/arrays'\n\nexport interface SingletonPromiseReturn<T> {\n (): Promise<T>\n /**\n * Reset current staled promise.\n * Await it to have proper shutdown.\n */\n reset: () => Promise<void>\n}\n\n// export { peek } from 'bun'\n\n/**\n * Promise with `resolve` and `reject` methods of itself\n */\nexport interface ControlledPromise<T = void> extends Promise<T> {\n resolve: (value: T | PromiseLike<T>) => void\n reject: (reason?: any) => void\n}\n\n/**\n * Create singleton promise function.\n *\n * @category Promise\n */\nexport function createSingletonPromise<T>(fn: () => Promise<T>): SingletonPromiseReturn<T> {\n let _promise: Promise<T> | undefined\n\n function wrapper() {\n if (!_promise) _promise = fn()\n return _promise\n }\n wrapper.reset = async () => {\n const _prev = _promise\n _promise = undefined\n if (_prev) await _prev\n }\n\n return wrapper\n}\n\n/**\n * Create a promise lock.\n *\n * @category Promise\n * @example\n * ```\n * const lock = createPromiseLock()\n *\n * lock.run(async () => {\n * await doSomething()\n * })\n *\n * // in anther context:\n * await lock.wait() // it will wait all tasking finished\n * ```\n */\nexport function createPromiseLock() {\n const locks: Promise<any>[] = []\n\n return {\n async run<T = void>(fn: () => Promise<T>): Promise<T> {\n const p = fn()\n locks.push(p)\n try {\n return await p\n } finally {\n remove(locks, p)\n }\n },\n async wait(): Promise<void> {\n await Promise.allSettled(locks)\n },\n isWaiting() {\n return Boolean(locks.length)\n },\n clear() {\n locks.length = 0\n },\n }\n}\n\n/**\n * Return a Promise with `resolve` and `reject` methods\n *\n * @category Promise\n * @example\n * ```\n * const promise = createControlledPromise()\n *\n * await promise\n *\n * // in anther context:\n * promise.resolve(data)\n * ```\n */\nexport function createControlledPromise<T>(): ControlledPromise<T> {\n let resolve: any\n let reject: any\n\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n }) as ControlledPromise<T>\n\n promise.resolve = resolve\n\n promise.reject = reject\n return promise\n}\n\n/**\n * Create a promise that will be resolved after `ms` milliseconds.\n */\n// export { sleep, sleepSync } from 'bun'\n",
|
|
27
|
+
"export type {\n Flag,\n MagicRegExp,\n MagicRegExpMatchArray,\n Input,\n MapToStringCapturedBy,\n StringCapturedBy,\n} from 'magic-regexp'\nexport {\n createRegExp,\n caseInsensitive,\n anyOf,\n carriageReturn,\n char,\n charIn,\n charNotIn,\n digit,\n dotAll,\n exactly,\n global,\n letter,\n linefeed,\n maybe,\n multiline,\n not,\n oneOrMore,\n sticky,\n tab,\n unicode,\n whitespace,\n withIndices,\n word,\n wordBoundary,\n wordChar,\n} from 'magic-regexp'\n",
|
|
28
|
+
"export function retry(fn: Function, options: any): Promise<any> {\n const { retries = 3, initialDelay = 1000, backoffFactor = 2, jitter = true } = options\n\n return new Promise((resolve, reject) => {\n let attemptCount = 0\n const attempt = async () => {\n try {\n resolve(await fn())\n } catch (err) {\n if (attemptCount >= retries) {\n reject(err)\n } else {\n const delay = calculateDelay(attemptCount, initialDelay, backoffFactor, jitter)\n setTimeout(() => attempt(), delay)\n attemptCount++\n }\n }\n }\n attempt()\n })\n}\n\nexport function calculateDelay(\n attemptCount: number,\n initialDelay: number,\n backoffFactor: number,\n jitter?: boolean,\n): number {\n let delay = initialDelay * backoffFactor ** attemptCount\n if (jitter) {\n const random = Math.random() // Generates a number between 0 and 1\n const jitterValue = delay * 0.3 // Jitter will be up to 30% of the delay\n delay = delay + jitterValue * (random - 0.5) * 2 // Adjust delay randomly within ±30%\n }\n return delay\n}\n",
|
|
29
|
+
"/**\n * Pauses execution for a specified number of milliseconds.\n * @param ms The number of milliseconds to pause execution.\n * @returns A promise that resolves after the specified delay.\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Pauses execution for a specified number of milliseconds.\n * @param ms The number of milliseconds to pause execution.\n * @returns A promise that resolves after the specified delay.\n */\nexport function wait(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Pauses execution for a specified number of milliseconds.\n * @param ms The number of milliseconds to pause execution.\n * @returns A promise that resolves after the specified delay.\n */\nexport function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Pauses execution until a specified condition is met.\n * @param condition The condition to wait for.\n * @param interval The interval at which to check the condition, in milliseconds. Defaults to 1000.\n * @returns A promise that resolves when the condition is met.\n */\nexport function waitUntil(condition: () => boolean, interval = 1000): Promise<void> {\n return new Promise((resolve) => {\n const check = setInterval(() => {\n if (condition()) {\n clearInterval(check)\n resolve()\n }\n }, interval)\n })\n}\n\n/**\n * Pauses execution while a specified condition is met.\n * @param condition The condition to wait while.\n * @param interval The interval at which to check the condition, in milliseconds. Defaults to 1000.\n * @returns A promise that resolves when the condition is no longer met.\n */\nexport function waitWhile(condition: () => boolean, interval = 1000): Promise<void> {\n return new Promise((resolve) => {\n const check = setInterval(() => {\n if (!condition()) {\n clearInterval(check)\n resolve()\n }\n }, interval)\n })\n}\n",
|
|
30
|
+
"/**\n * Throttle a function.\n *\n * @param {Function} fn - The function to throttle.\n * @param {number} [wait] - The time to wait between function calls.\n * @returns {Function} - A new function that throttles the calls to the original function.\n *\n * @example\n * ```ts\n * // logs window dimensions at most every 250ms\n * window.addEventListener(\n * \"resize\",\n * throttle(function (evt) {\n * console.log(window.innerWidth)\n * console.log(window.innerHeight)\n * }, 250)\n * )\n * ```\n */\n\nexport function throttle(fn: Function, wait = 300) {\n let inThrottle: boolean\n let lastFn: ReturnType<typeof setTimeout>\n let lastTime: number\n\n return function (this: unknown, ...args: any[]) {\n if (!inThrottle) {\n fn.apply(this, args)\n\n lastTime = Date.now()\n inThrottle = true\n } else {\n clearTimeout(lastFn)\n\n lastFn = setTimeout(\n () => {\n if (Date.now() - lastTime >= wait) {\n fn.apply(this, args) // Use 'this' directly\n lastTime = Date.now()\n }\n },\n Math.max(wait - (Date.now() - lastTime), 0),\n )\n }\n }\n}\n",
|
|
31
|
+
"export {\n asyncComputed,\n breakpointsAntDesign,\n breakpointsBootstrapV5,\n breakpointsMasterCss,\n breakpointsQuasar,\n breakpointsSematic,\n breakpointsTailwind,\n breakpointsVuetify,\n cloneFnJSON,\n computedAsync,\n computedInject,\n createFetch,\n createReusableTemplate,\n createTemplatePromise,\n createUnrefFn,\n customStorageEventName,\n defaultDocument,\n defaultLocation,\n defaultNavigator,\n defaultWindow,\n executeTransition,\n formatTimeAgo,\n getSSRHandler,\n mapGamepadToXbox360Controller,\n onClickOutside,\n onKeyDown,\n onKeyPressed,\n onKeyStroke,\n onKeyUp,\n onLongPress,\n onStartTyping,\n setSSRHandler,\n templateRef,\n unrefElement,\n useActiveElement,\n useAnimate,\n useAsyncQueue,\n useAsyncState,\n useBase64,\n useBattery,\n useBluetooth,\n useBreakpoints,\n useBroadcastChannel,\n useBrowserLocation,\n useCached,\n useClipboard,\n useCloned,\n useColorMode,\n useConfirmDialog,\n useCssVar,\n useCurrentElement,\n useCycleList,\n useDark,\n useDebouncedRefHistory,\n useDeviceMotion,\n useDeviceOrientation,\n useDevicePixelRatio,\n useDevicesList,\n useDisplayMedia,\n useDocumentVisibility,\n useDraggable,\n useDropZone,\n useElementBounding,\n useElementByPoint,\n useElementHover,\n useElementSize,\n useElementVisibility,\n useEventBus,\n useEventListener,\n useEventSource,\n useEyeDropper,\n useFavicon,\n useFetch,\n useFileDialog,\n useFileSystemAccess,\n useFocus,\n useFocusWithin,\n useFps,\n useFullscreen,\n useGamepad,\n useGeolocation,\n useIdle,\n useImage,\n useInfiniteScroll,\n useIntersectionObserver,\n useKeyModifier,\n useLocalStorage,\n useMagicKeys,\n useManualRefHistory,\n useMediaControls,\n useMediaQuery,\n useMemoize,\n useMemory,\n useMounted,\n useMouse,\n useMouseInElement,\n useMousePressed,\n useMutationObserver,\n useNavigatorLanguage,\n useNetwork,\n useObjectUrl,\n useOffsetPagination,\n useOnline,\n usePageLeave,\n useParallax,\n useParentElement,\n usePerformanceObserver,\n usePermission,\n usePointer,\n usePointerLock,\n usePointerSwipe,\n usePreferredColorScheme,\n usePreferredContrast,\n usePreferredDark,\n usePreferredLanguages,\n usePreferredReducedMotion,\n usePrevious,\n useRafFn,\n useRefHistory,\n useResizeObserver,\n useScreenOrientation,\n useScreenSafeArea,\n useScriptTag,\n useScroll,\n useScrollLock,\n useSessionStorage,\n useShare,\n useSorted,\n useSpeechRecognition,\n useSpeechSynthesis,\n useStepper,\n useStorage,\n useStorageAsync,\n useStyleTag,\n useSupported,\n useSwipe,\n useTemplateRefsList,\n useTextDirection,\n useTextSelection,\n useTextareaAutosize,\n useThrottledRefHistory,\n useTimeAgo,\n useTimeoutPoll,\n useTimestamp,\n useTitle,\n useTransition,\n useToggle,\n useUrlSearchParams,\n useUserMedia,\n useVModel,\n useVModels,\n useVibrate,\n useVirtualList,\n useWakeLock,\n useWebNotification,\n useWebSocket,\n useWebWorker,\n useWebWorkerFn,\n useWindowFocus,\n useWindowScroll,\n useWindowSize,\n useDateFormat,\n useNow,\n watchArray,\n watchAtMost,\n watchDebounced,\n watchDeep,\n watchIgnorable,\n watchImmediate,\n watchOnce,\n watchPausable,\n watchThrottled,\n watchTriggerable,\n watchWithFilter,\n whenever,\n syncRef,\n syncRefs,\n throttledRef,\n throttledWatch,\n toReactive,\n tryOnBeforeMount,\n tryOnBeforeUnmount,\n tryOnMounted,\n tryOnScopeDispose,\n tryOnUnmounted,\n until,\n isDefined,\n ignorableWatch,\n extendRef,\n eagerComputed,\n debouncedRef,\n debouncedWatch,\n createReactiveFn,\n createSharedComposable,\n createInjectionState,\n createGlobalState,\n createEventHook,\n controlledRef,\n controlledComputed,\n computedEager,\n computedWithControl,\n autoResetRef,\n injectLocal,\n makeDestructurable,\n pausableWatch,\n provideLocal,\n reactify,\n reactifyObject,\n reactiveComputed,\n reactiveOmit,\n reactivePick,\n refAutoReset,\n refDebounced,\n refDefault,\n refThrottled,\n refWithControl,\n resolveRef,\n resolveUnref,\n useArrayDifference,\n useArrayEvery,\n useArrayFilter,\n useArrayFind,\n useArrayFindIndex,\n useArrayIncludes,\n useArrayMap,\n useArrayReduce,\n useArraySome,\n useArrayUnique,\n useClipboardItems,\n useCounter,\n useDebounce,\n useDebounceFn,\n useInterval,\n useIntervalFn,\n useLastChanged,\n useThrottle,\n useThrottleFn,\n useTimeout,\n useTimeoutFn,\n useToNumber,\n useToString,\n} from '@vueuse/core'\n\nexport type {\n // Head,\n HeadObject,\n HeadObjectPlain,\n} from '@vueuse/head'\n\nexport {\n Head,\n HeadVuePlugin,\n createHead,\n renderHeadToString,\n} from '@vueuse/head'\n\nexport { default as readableSize } from 'pretty-bytes'\n",
|
|
32
|
+
"const BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'KiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nexport default function prettyBytes(number, options) {\n\tif (!Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\tspace: true,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tconst separator = options.space ? ' ' : '';\n\n\tif (options.signed && number === 0) {\n\t\treturn ` 0${separator}${UNITS[0]}`;\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tlet localeOptions;\n\n\tif (options.minimumFractionDigits !== undefined) {\n\t\tlocaleOptions = {minimumFractionDigits: options.minimumFractionDigits};\n\t}\n\n\tif (options.maximumFractionDigits !== undefined) {\n\t\tlocaleOptions = {maximumFractionDigits: options.maximumFractionDigits, ...localeOptions};\n\t}\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\treturn prefix + numberString + separator + UNITS[0];\n\t}\n\n\tconst exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n\tnumber /= (options.binary ? 1024 : 1000) ** exponent;\n\n\tif (!localeOptions) {\n\t\tnumber = number.toPrecision(3);\n\t}\n\n\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\n\tconst unit = UNITS[exponent];\n\n\treturn prefix + numberString + separator + unit;\n}\n"
|
|
33
|
+
],
|
|
34
|
+
"mappings": "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",
|
|
35
|
+
"debugId": "E32011EB197DC57D64756E2164756E21",
|
|
36
|
+
"names": []
|
|
37
|
+
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stacksjs/utils",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.63.0",
|
|
5
5
|
"description": "The Stacks helper functions.",
|
|
6
6
|
"author": "Chris Breuer",
|
|
7
|
-
"license": "MIT",
|
|
8
7
|
"funding": "https://github.com/sponsors/chrisbbreuer",
|
|
8
|
+
"license": "MIT",
|
|
9
9
|
"homepage": "https://github.com/stacksjs/stacks/tree/main/storage/framework/core/helpers#readme",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
@@ -63,17 +63,16 @@
|
|
|
63
63
|
"@stacksjs/strings": "latest",
|
|
64
64
|
"@stacksjs/types": "latest",
|
|
65
65
|
"@types/js-yaml": "^4.0.9",
|
|
66
|
-
"@vueuse/core": "^
|
|
66
|
+
"@vueuse/core": "^11.0.0",
|
|
67
67
|
"@vueuse/head": "^2.0.0",
|
|
68
|
-
"@vueuse/math": "^
|
|
69
|
-
"@vueuse/shared": "^
|
|
68
|
+
"@vueuse/math": "^11.0.0",
|
|
69
|
+
"@vueuse/shared": "^11.0.0",
|
|
70
70
|
"bun-plugin-env": "^0.4.1",
|
|
71
71
|
"bun-plugin-yml": "^0.3.1",
|
|
72
72
|
"export-size": "^0.7.0",
|
|
73
|
-
"yaml": "^2.
|
|
73
|
+
"yaml": "^2.5.0"
|
|
74
74
|
},
|
|
75
75
|
"dependencies": {
|
|
76
|
-
"@dinero.js/currencies": "2.0.0-alpha.14",
|
|
77
76
|
"@stacksjs/actions": "latest",
|
|
78
77
|
"@stacksjs/arrays": "latest",
|
|
79
78
|
"@stacksjs/cli": "latest",
|
|
@@ -83,16 +82,15 @@
|
|
|
83
82
|
"@stacksjs/storage": "latest",
|
|
84
83
|
"@stacksjs/strings": "latest",
|
|
85
84
|
"@stacksjs/types": "latest",
|
|
86
|
-
"@vueuse/core": "^
|
|
85
|
+
"@vueuse/core": "^11.0.0",
|
|
87
86
|
"@vueuse/head": "^2.0.0",
|
|
88
|
-
"@vueuse/math": "^
|
|
89
|
-
"@vueuse/shared": "^
|
|
87
|
+
"@vueuse/math": "^11.0.0",
|
|
88
|
+
"@vueuse/shared": "^11.0.0",
|
|
90
89
|
"bun-plugin-env": "^0.4.1",
|
|
91
90
|
"bun-plugin-yml": "^0.3.1",
|
|
92
91
|
"defu": "^6.1.4",
|
|
93
92
|
"detect-indent": "^7.0.1",
|
|
94
93
|
"detect-newline": "^4.0.1",
|
|
95
|
-
"dinero.js": "2.0.0-alpha.14",
|
|
96
94
|
"export-size": "^0.7.0",
|
|
97
95
|
"js-yaml": "^4.1.0",
|
|
98
96
|
"kolorist": "1.8.0",
|
|
@@ -100,7 +98,10 @@
|
|
|
100
98
|
"magic-regexp": "^0.8.0",
|
|
101
99
|
"perfect-debounce": "^1.0.0",
|
|
102
100
|
"pretty-bytes": "^6.1.1",
|
|
103
|
-
"
|
|
101
|
+
"ace-builds": "^1.35.4",
|
|
102
|
+
"resize-observer-polyfill": "^1.5.1",
|
|
103
|
+
"vue3-ace-editor": "^2.2.4",
|
|
104
|
+
"yaml": "^2.5.0"
|
|
104
105
|
},
|
|
105
106
|
"devDependencies": {
|
|
106
107
|
"@stacksjs/development": "latest",
|
package/src/clean.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { path as p } from '@stacksjs/path'
|
|
2
|
-
import { $ } from 'bun'
|
|
3
2
|
|
|
4
3
|
export async function cleanProject() {
|
|
4
|
+
const $ = Bun.$
|
|
5
5
|
await $`rm -rf ${p.projectPath('bun.lockb')}`
|
|
6
6
|
await $`rm -rf ${p.projectPath('yarn.lock')}` // just in case
|
|
7
7
|
await $`rm -rf ${p.projectPath('node_modules/')}`
|
package/src/hash.ts
CHANGED
|
@@ -14,12 +14,22 @@ export function originRequestFunctionHash() {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export function websiteSourceHash() {
|
|
17
|
-
const docsSrc = [p.projectPath('docs')
|
|
18
|
-
|
|
17
|
+
const docsSrc = [p.projectPath('docs')]
|
|
19
18
|
const websiteSrc = [
|
|
20
19
|
p.projectPath('resources/views'),
|
|
21
|
-
|
|
20
|
+
p.projectPath('resources/assets'),
|
|
21
|
+
p.projectPath('resources/lang'),
|
|
22
|
+
p.projectPath('resources/functions'),
|
|
23
|
+
p.projectPath('resources/components'),
|
|
24
|
+
p.projectPath('resources/modules'),
|
|
25
|
+
p.projectPath('resources/stores'),
|
|
22
26
|
]
|
|
23
27
|
|
|
24
28
|
return config.app.docMode === true ? hashPaths(docsSrc) : hashPaths(websiteSrc)
|
|
25
29
|
}
|
|
30
|
+
|
|
31
|
+
export function docsSourceHash() {
|
|
32
|
+
const docsSrc = [p.projectPath('docs')]
|
|
33
|
+
|
|
34
|
+
return hashPaths(docsSrc)
|
|
35
|
+
}
|
package/src/index.ts
CHANGED
package/src/currency.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export {
|
|
2
|
-
add,
|
|
3
|
-
allocate,
|
|
4
|
-
compare,
|
|
5
|
-
convert,
|
|
6
|
-
equal,
|
|
7
|
-
greaterThan,
|
|
8
|
-
greaterThanOrEqual,
|
|
9
|
-
hasSubUnits,
|
|
10
|
-
isZero,
|
|
11
|
-
lessThan,
|
|
12
|
-
lessThanOrEqual,
|
|
13
|
-
maximum,
|
|
14
|
-
minimum,
|
|
15
|
-
multiply,
|
|
16
|
-
normalizeScale,
|
|
17
|
-
dinero,
|
|
18
|
-
dinero as money,
|
|
19
|
-
subtract,
|
|
20
|
-
toSnapshot,
|
|
21
|
-
toUnits,
|
|
22
|
-
toDecimal,
|
|
23
|
-
trimScale,
|
|
24
|
-
haveSameCurrency,
|
|
25
|
-
haveSameAmount,
|
|
26
|
-
dinero as currency,
|
|
27
|
-
} from 'dinero.js'
|
|
28
|
-
export { USD } from '@dinero.js/currencies'
|
|
29
|
-
export type { Dinero, Currency } from 'dinero.js'
|