jskelet 0.5.5 → 0.6.1
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/AGENTS.md +19 -15
- package/CHANGELOG.md +165 -15
- package/README.md +16 -21
- package/bin/jskelet.mjs +23 -9
- package/docs/01-baslangic.md +4 -3
- package/docs/02-mimari.md +10 -4
- package/docs/03-routing.md +14 -7
- package/docs/04-render-ve-sablonlar.md +60 -43
- package/docs/05-islands.md +12 -8
- package/docs/06-cache.md +18 -7
- package/docs/07-yapilandirma.md +69 -27
- package/docs/08-build.md +15 -9
- package/docs/09-dev-araclari.md +22 -8
- package/docs/10-dagitim.md +14 -13
- package/docs/11-tasima.md +51 -17
- package/docs/12-panel-ve-oturum.md +10 -4
- package/docs/README.md +10 -33
- package/docs/en/01-getting-started.md +4 -3
- package/docs/en/02-architecture.md +12 -6
- package/docs/en/03-routing.md +15 -8
- package/docs/en/04-rendering.md +71 -59
- package/docs/en/05-islands.md +13 -8
- package/docs/en/06-caching.md +21 -7
- package/docs/en/07-configuration.md +69 -29
- package/docs/en/08-build.md +16 -10
- package/docs/en/09-dev-tools.md +24 -8
- package/docs/en/10-deployment.md +14 -14
- package/docs/en/11-migration.md +51 -16
- package/docs/en/12-dashboards-and-sessions.md +9 -4
- package/docs/en/README.md +10 -35
- package/package.json +48 -13
- package/src/build/tasks/client.mjs +91 -10
- package/src/build/tasks/icons.mjs +11 -1
- package/src/client/index.js +2 -2
- package/src/compile/codegen.js +4 -0
- package/src/compile/compile-all.js +12 -21
- package/src/compile/expr.js +5 -0
- package/src/compile/parse.js +64 -8
- package/src/compile/resolve.js +3 -0
- package/src/config/defaults.js +48 -5
- package/src/config/index.js +138 -27
- package/src/dev-server.mjs +26 -3
- package/src/http/cookies-entry.js +1 -0
- package/src/http/cookies.js +18 -0
- package/src/logo.png +0 -0
- package/src/migrate/apply.mjs +262 -0
- package/src/migrate/babel.mjs +79 -0
- package/src/migrate/classify.mjs +155 -0
- package/src/migrate/config.mjs +126 -0
- package/src/migrate/fs-walk.mjs +191 -0
- package/src/migrate/parse.mjs +26 -0
- package/src/migrate/scan.mjs +177 -0
- package/src/migrate/transform/expr-source.mjs +168 -0
- package/src/migrate/transform/island.mjs +67 -0
- package/src/migrate/transform/jsx-to-component.mjs +302 -0
- package/src/migrate/transform/jsx-to-jsk.mjs +330 -0
- package/src/migrate/transform/page-split.mjs +435 -0
- package/src/migrate/write.mjs +81 -0
- package/src/migrate.mjs +171 -0
- package/src/server/auth/handoff.js +94 -11
- package/src/server/create-app.js +37 -10
- package/src/server/ejs-adapter.js +59 -0
- package/src/server/html-cache.js +178 -32
- package/src/server/image-optimizer.js +94 -26
- package/src/server/middleware/dev-gate.js +21 -8
- package/src/server/middleware/robots-txt.js +341 -0
- package/src/server/port-guard.js +255 -0
- package/src/server/prewarm.js +137 -51
- package/src/server/render.js +30 -10
- package/src/server/status-page.js +105 -4
- package/src/start.mjs +18 -3
- package/src/templates/layout.ejs +8 -28
- package/src/templates/layout.jsk +30 -0
- package/src/templates/layout.render.js +41 -0
- package/src/views/helpers/tags.js +86 -3
- package/types/build/resolve-peer.d.mts +13 -0
- package/types/client/dom.d.ts +55 -0
- package/types/client/form.d.ts +19 -0
- package/types/client/index.d.ts +20 -0
- package/types/client/registry.d.ts +53 -0
- package/types/client/safe-image.d.ts +19 -0
- package/types/client/shared-cookie.d.ts +82 -0
- package/types/client/store.d.ts +18 -0
- package/types/client/swap.d.ts +46 -0
- package/types/compile/codegen.d.ts +32 -0
- package/types/compile/compile-all.d.ts +42 -0
- package/types/compile/errors.d.ts +30 -0
- package/types/compile/expr.d.ts +67 -0
- package/types/compile/index.d.ts +10 -0
- package/types/compile/parse.d.ts +82 -0
- package/types/compile/resolve.d.ts +46 -0
- package/types/compile/scan-exports.d.ts +9 -0
- package/types/config/defaults.d.ts +477 -0
- package/types/config/index.d.ts +304 -0
- package/types/config/pattern.d.ts +38 -0
- package/types/http/control-flow.d.ts +45 -0
- package/types/http/cookies-entry.d.ts +5 -0
- package/types/http/cookies.d.ts +113 -0
- package/types/http/request-cache.d.ts +13 -0
- package/types/http/request-context.d.ts +67 -0
- package/types/http/shared-cookie.d.ts +73 -0
- package/types/index.d.ts +30 -0
- package/types/log.d.mts +153 -0
- package/types/server/admin/actions.d.ts +16 -0
- package/types/server/admin/auth.d.ts +52 -0
- package/types/server/admin/event-log.d.ts +38 -0
- package/types/server/admin/gate.d.ts +43 -0
- package/types/server/admin/inventory.d.ts +40 -0
- package/types/server/admin/mount.d.ts +6 -0
- package/types/server/admin/router.d.ts +6 -0
- package/types/server/admin/snapshot.d.ts +6 -0
- package/types/server/assets.d.ts +47 -0
- package/types/server/auth/handoff.d.ts +12 -0
- package/types/server/cache-deps.d.ts +16 -0
- package/types/server/cache-vary.d.ts +30 -0
- package/types/server/cloudflare.d.ts +163 -0
- package/types/server/create-app.d.ts +25 -0
- package/types/server/data-cache.d.ts +116 -0
- package/types/server/dev/devtools.d.ts +44 -0
- package/types/server/dev/report.d.ts +229 -0
- package/types/server/dev/socket.d.ts +17 -0
- package/types/server/dev/version-check.d.mts +15 -0
- package/types/server/ejs-adapter.d.ts +11 -0
- package/types/server/head-hints.d.ts +40 -0
- package/types/server/html-cache.d.ts +207 -0
- package/types/server/image-optimizer.d.ts +68 -0
- package/types/server/logs/access-middleware.d.ts +7 -0
- package/types/server/logs/file-sink.d.ts +17 -0
- package/types/server/logs/pipeline.d.ts +37 -0
- package/types/server/logs/s3-put.d.ts +85 -0
- package/types/server/logs/s3-sink.d.ts +26 -0
- package/types/server/metadata.d.ts +38 -0
- package/types/server/middleware/compression.d.ts +17 -0
- package/types/server/middleware/csrf.d.ts +4 -0
- package/types/server/middleware/dev-gate.d.ts +2 -0
- package/types/server/middleware/headers.d.ts +2 -0
- package/types/server/middleware/redirects.d.ts +2 -0
- package/types/server/middleware/robots-txt.d.ts +33 -0
- package/types/server/middleware/static-precompressed.d.ts +5 -0
- package/types/server/middleware/trailing-slash.d.ts +11 -0
- package/types/server/middleware/upstream-proxy.d.ts +21 -0
- package/types/server/og-image.d.ts +149 -0
- package/types/server/port-guard.d.ts +50 -0
- package/types/server/prewarm.d.ts +131 -0
- package/types/server/redis.d.ts +163 -0
- package/types/server/render.d.ts +101 -0
- package/types/server/router.d.ts +5 -0
- package/types/server/status-page.d.ts +24 -0
- package/types/server/upstream-limiter.d.ts +123 -0
- package/types/server/upstream-tracking.d.ts +42 -0
- package/types/shared/cookie-domain.d.ts +29 -0
- package/types/templates/layout.render.d.ts +7 -0
- package/types/version.d.mts +10 -0
- package/types/views/components/loader.d.ts +5 -0
- package/types/views/helpers/html.d.ts +39 -0
- package/types/views/helpers/tags.d.ts +127 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export type SwapOptions = {
|
|
2
|
+
/**
|
|
3
|
+
* Varsayılan `GET`.
|
|
4
|
+
*/
|
|
5
|
+
method?: string;
|
|
6
|
+
body?: BodyInit | null;
|
|
7
|
+
headers?: Record<string, string>;
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
/**
|
|
10
|
+
* `true` → adres çubuğu `url` ile güncellenir.
|
|
11
|
+
*/
|
|
12
|
+
history?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Varsayılan `replace`.
|
|
15
|
+
*/
|
|
16
|
+
mode?: "replace" | "append";
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @typedef {object} SwapOptions
|
|
20
|
+
* @property {string} [method] Varsayılan `GET`.
|
|
21
|
+
* @property {BodyInit | null} [body]
|
|
22
|
+
* @property {Record<string, string>} [headers]
|
|
23
|
+
* @property {AbortSignal} [signal]
|
|
24
|
+
* @property {boolean} [history] `true` → adres çubuğu `url` ile güncellenir.
|
|
25
|
+
* @property {"replace" | "append"} [mode] Varsayılan `replace`.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* @param {Element | string} target Takas edilecek bölge.
|
|
29
|
+
* @param {string} url Parçayı döndüren uç.
|
|
30
|
+
* @param {SwapOptions} [options]
|
|
31
|
+
* @returns {Promise<boolean>} Başarılıysa `true`; hata durumunda mevcut
|
|
32
|
+
* içerik korunur ve `false` döner.
|
|
33
|
+
*/
|
|
34
|
+
export declare function swap(target: Element | string, url: string, options?: SwapOptions): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* `data-swap` taşıyan bağlantı ve butonları otomatik bağlar.
|
|
37
|
+
*
|
|
38
|
+
* <a href="/_fragment/rows?page=2" data-swap="#rows" data-swap-history>…</a>
|
|
39
|
+
*
|
|
40
|
+
* Tek bir delege dinleyici: sonradan DOM'a giren bağlantılar da çalışır ve
|
|
41
|
+
* her takastan sonra yeniden bağlama gerekmez.
|
|
42
|
+
*
|
|
43
|
+
* @param {ParentNode} [root]
|
|
44
|
+
* @returns {() => void} Dinleyiciyi söken fonksiyon.
|
|
45
|
+
*/
|
|
46
|
+
export declare function startSwapLinks(root?: ParentNode): () => void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type AstNode = import('./parse.js').AstNode;
|
|
2
|
+
export type AttrNode = import('./parse.js').AttrNode;
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {import('./parse.js').AstNode} AstNode
|
|
5
|
+
* @typedef {import('./parse.js').AttrNode} AttrNode
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @param {AstNode[]} ast
|
|
9
|
+
* @param {{ viewId: string, file?: string, knownComponents?: Set<string> }} options
|
|
10
|
+
* @returns {{ code: string, includes: string[], components: string[] }}
|
|
11
|
+
*/
|
|
12
|
+
export declare function codegen(ast: AstNode[], options: {
|
|
13
|
+
viewId: string;
|
|
14
|
+
file?: string;
|
|
15
|
+
knownComponents?: Set<string>;
|
|
16
|
+
}): {
|
|
17
|
+
code: string;
|
|
18
|
+
includes: string[];
|
|
19
|
+
components: string[];
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Include yolunu view id'ye çevir (uzantısız, `/` ayırıcılı).
|
|
23
|
+
* @param {string} includePath
|
|
24
|
+
* @returns {string}
|
|
25
|
+
*/
|
|
26
|
+
export declare function normalizeIncludeId(includePath: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* `market-hero` / `MarketHero` → `MarketHero`
|
|
29
|
+
* @param {string} name
|
|
30
|
+
* @returns {string}
|
|
31
|
+
*/
|
|
32
|
+
export declare function toPascalCase(name: string): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{ root: string, dirs: Record<string, string> }} config
|
|
3
|
+
* @param {{ quiet?: boolean }} [options]
|
|
4
|
+
* @returns {Promise<{ count: number, manifest: Record<string, string>, outDir: string }>}
|
|
5
|
+
*/
|
|
6
|
+
export declare function compileAll(config: {
|
|
7
|
+
root: string;
|
|
8
|
+
dirs: Record<string, string>;
|
|
9
|
+
}, _options?: {}): Promise<{
|
|
10
|
+
count: number;
|
|
11
|
+
manifest: Record<string, string>;
|
|
12
|
+
outDir: string;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Manifest yoksa veya herhangi bir `.jsk` daha yeniyse yeniden derler.
|
|
16
|
+
* Dev sunucu restart'ında build watch kaçırmış olsa bile şablonlar güncel kalır.
|
|
17
|
+
*
|
|
18
|
+
* @param {{ root: string, dirs: Record<string, string> }} config
|
|
19
|
+
* @returns {Promise<{ count: number, rebuilt: boolean }>}
|
|
20
|
+
*/
|
|
21
|
+
export declare function ensureTemplatesCompiled(config: {
|
|
22
|
+
root: string;
|
|
23
|
+
dirs: Record<string, string>;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
count: number;
|
|
26
|
+
rebuilt: boolean;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Tek kaynak dizgisini derler (birim testleri).
|
|
30
|
+
* @param {string} source
|
|
31
|
+
* @param {{ viewId?: string, file?: string, knownComponents?: Set<string> }} [options]
|
|
32
|
+
* @returns {{ code: string, includes: string[], components: string[] }}
|
|
33
|
+
*/
|
|
34
|
+
export declare function compileSource(source: string, options?: {
|
|
35
|
+
viewId?: string;
|
|
36
|
+
file?: string;
|
|
37
|
+
knownComponents?: Set<string>;
|
|
38
|
+
}): {
|
|
39
|
+
code: string;
|
|
40
|
+
includes: string[];
|
|
41
|
+
components: string[];
|
|
42
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Şablon derleme hataları. Satır/sütun korunur ki DX overlay ve CLI
|
|
3
|
+
* çıktısı kaynağa işaret edebilsin.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @param {string} source
|
|
7
|
+
* @param {number} index
|
|
8
|
+
* @returns {{ line: number, column: number }}
|
|
9
|
+
*/
|
|
10
|
+
export declare function indexToLocation(source: string, index: number): {
|
|
11
|
+
line: number;
|
|
12
|
+
column: number;
|
|
13
|
+
};
|
|
14
|
+
export declare class CompileError extends Error {
|
|
15
|
+
file: string | undefined;
|
|
16
|
+
line: number | undefined;
|
|
17
|
+
column: number | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* @param {string} message
|
|
20
|
+
* @param {{ file?: string, source?: string, index?: number,
|
|
21
|
+
* line?: number, column?: number }} [opts]
|
|
22
|
+
*/
|
|
23
|
+
constructor(message: string, opts?: {
|
|
24
|
+
file?: string;
|
|
25
|
+
source?: string;
|
|
26
|
+
index?: number;
|
|
27
|
+
line?: number;
|
|
28
|
+
column?: number;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export type LiteralNode = {
|
|
2
|
+
type: 'Literal';
|
|
3
|
+
value: string | number | boolean | null;
|
|
4
|
+
raw: string;
|
|
5
|
+
};
|
|
6
|
+
export type IdentNode = {
|
|
7
|
+
type: 'Ident';
|
|
8
|
+
name: string;
|
|
9
|
+
};
|
|
10
|
+
export type MemberNode = {
|
|
11
|
+
type: 'Member';
|
|
12
|
+
object: ExprNode;
|
|
13
|
+
property: string;
|
|
14
|
+
optional: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type IndexNode = {
|
|
17
|
+
type: 'Index';
|
|
18
|
+
object: ExprNode;
|
|
19
|
+
index: ExprNode;
|
|
20
|
+
optional: boolean;
|
|
21
|
+
};
|
|
22
|
+
export type UnaryNode = {
|
|
23
|
+
type: 'Unary';
|
|
24
|
+
op: '!' | '-';
|
|
25
|
+
argument: ExprNode;
|
|
26
|
+
};
|
|
27
|
+
export type BinaryNode = {
|
|
28
|
+
type: 'Binary';
|
|
29
|
+
op: string;
|
|
30
|
+
left: ExprNode;
|
|
31
|
+
right: ExprNode;
|
|
32
|
+
};
|
|
33
|
+
export type CondNode = {
|
|
34
|
+
type: 'Cond';
|
|
35
|
+
test: ExprNode;
|
|
36
|
+
consequent: ExprNode;
|
|
37
|
+
alternate: ExprNode;
|
|
38
|
+
};
|
|
39
|
+
export type ExprNode = LiteralNode | IdentNode | MemberNode | IndexNode | UnaryNode | BinaryNode | CondNode;
|
|
40
|
+
/**
|
|
41
|
+
* @param {string} source
|
|
42
|
+
* @param {number} start
|
|
43
|
+
* @param {number} end
|
|
44
|
+
* @param {{ file?: string, templateSource?: string, templateIndex?: number }} [meta]
|
|
45
|
+
* @returns {ExprNode}
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseExpr(source: string, start?: number, end?: number, meta?: {
|
|
48
|
+
file?: string;
|
|
49
|
+
templateSource?: string;
|
|
50
|
+
templateIndex?: number;
|
|
51
|
+
}): ExprNode;
|
|
52
|
+
/**
|
|
53
|
+
* İfadeyi JS kaynak metnine çevirir. `locals` içindeki isimler çıplak kalır;
|
|
54
|
+
* diğerleri `data.` öneki alır.
|
|
55
|
+
*
|
|
56
|
+
* @param {ExprNode} node
|
|
57
|
+
* @param {Set<string>} [locals]
|
|
58
|
+
* @returns {string}
|
|
59
|
+
*/
|
|
60
|
+
export declare function codegenExpr(node: ExprNode, locals?: Set<string>): string;
|
|
61
|
+
/**
|
|
62
|
+
* İfadede geçen kök tanımlayıcılar (data alanları / local adayları).
|
|
63
|
+
* @param {ExprNode} node
|
|
64
|
+
* @param {Set<string>} [out]
|
|
65
|
+
* @returns {Set<string>}
|
|
66
|
+
*/
|
|
67
|
+
export declare function collectIdents(node: ExprNode, out?: Set<string>): Set<string>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build-time `.jsk` derleyici yüzeyi.
|
|
3
|
+
*/
|
|
4
|
+
export { CompileError, indexToLocation } from "./errors.js";
|
|
5
|
+
export { parseExpr, codegenExpr } from "./expr.js";
|
|
6
|
+
export { parseTemplate, isComponentTag } from "./parse.js";
|
|
7
|
+
export { codegen, toPascalCase, normalizeIncludeId } from "./codegen.js";
|
|
8
|
+
export { getViewRoots, getComponentDirs, discoverJskFiles, componentNameFromViewId, collectKnownComponents, toComponentTag, } from "./resolve.js";
|
|
9
|
+
export { scanNamedExports } from "./scan-exports.js";
|
|
10
|
+
export { compileAll, compileSource, ensureTemplatesCompiled } from "./compile-all.js";
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export type ExprNode = import('./expr.js').ExprNode;
|
|
2
|
+
export type TextNode = {
|
|
3
|
+
type: 'Text';
|
|
4
|
+
value: string;
|
|
5
|
+
};
|
|
6
|
+
export type InterpNode = {
|
|
7
|
+
type: 'Interp';
|
|
8
|
+
expr: ExprNode;
|
|
9
|
+
raw: boolean;
|
|
10
|
+
index: number;
|
|
11
|
+
};
|
|
12
|
+
export type AttrNode = {
|
|
13
|
+
name: string;
|
|
14
|
+
value: string | null;
|
|
15
|
+
expr: ExprNode | null;
|
|
16
|
+
bound: boolean;
|
|
17
|
+
boolean: boolean;
|
|
18
|
+
index: number;
|
|
19
|
+
};
|
|
20
|
+
export type ElementNode = {
|
|
21
|
+
type: 'Element';
|
|
22
|
+
name: string;
|
|
23
|
+
attrs: AttrNode[];
|
|
24
|
+
children: AstNode[];
|
|
25
|
+
selfClosing: boolean;
|
|
26
|
+
index: number;
|
|
27
|
+
};
|
|
28
|
+
export type ComponentNode = {
|
|
29
|
+
type: 'Component';
|
|
30
|
+
name: string;
|
|
31
|
+
attrs: AttrNode[];
|
|
32
|
+
children: AstNode[];
|
|
33
|
+
selfClosing: boolean;
|
|
34
|
+
index: number;
|
|
35
|
+
};
|
|
36
|
+
export type IfNode = {
|
|
37
|
+
type: 'If';
|
|
38
|
+
test: ExprNode;
|
|
39
|
+
consequent: AstNode[];
|
|
40
|
+
alternate: AstNode[];
|
|
41
|
+
index: number;
|
|
42
|
+
};
|
|
43
|
+
export type EachNode = {
|
|
44
|
+
type: 'Each';
|
|
45
|
+
list: ExprNode;
|
|
46
|
+
item: string;
|
|
47
|
+
indexName: string | null;
|
|
48
|
+
children: AstNode[];
|
|
49
|
+
index: number;
|
|
50
|
+
};
|
|
51
|
+
export type IncludeNode = {
|
|
52
|
+
type: 'Include';
|
|
53
|
+
path: string;
|
|
54
|
+
index: number;
|
|
55
|
+
};
|
|
56
|
+
export type AstNode = TextNode | InterpNode | ElementNode | ComponentNode | IfNode | EachNode | IncludeNode;
|
|
57
|
+
/**
|
|
58
|
+
* @typedef {import('./expr.js').ExprNode} ExprNode
|
|
59
|
+
* @typedef {{ type: 'Text', value: string }} TextNode
|
|
60
|
+
* @typedef {{ type: 'Interp', expr: ExprNode, raw: boolean, index: number }} InterpNode
|
|
61
|
+
* @typedef {{ name: string, value: string | null, expr: ExprNode | null, bound: boolean, boolean: boolean, index: number }} AttrNode
|
|
62
|
+
* @typedef {{ type: 'Element', name: string, attrs: AttrNode[], children: AstNode[], selfClosing: boolean, index: number }} ElementNode
|
|
63
|
+
* @typedef {{ type: 'Component', name: string, attrs: AttrNode[], children: AstNode[], selfClosing: boolean, index: number }} ComponentNode
|
|
64
|
+
* @typedef {{ type: 'If', test: ExprNode, consequent: AstNode[], alternate: AstNode[], index: number }} IfNode
|
|
65
|
+
* @typedef {{ type: 'Each', list: ExprNode, item: string, indexName: string | null, children: AstNode[], index: number }} EachNode
|
|
66
|
+
* @typedef {{ type: 'Include', path: string, index: number }} IncludeNode
|
|
67
|
+
* @typedef {TextNode | InterpNode | ElementNode | ComponentNode | IfNode | EachNode | IncludeNode} AstNode
|
|
68
|
+
*/
|
|
69
|
+
/**
|
|
70
|
+
* @param {string} source
|
|
71
|
+
* @param {{ file?: string }} [options]
|
|
72
|
+
* @returns {AstNode[]}
|
|
73
|
+
*/
|
|
74
|
+
export declare function parseTemplate(source: string, options?: {
|
|
75
|
+
file?: string;
|
|
76
|
+
}): AstNode[];
|
|
77
|
+
/**
|
|
78
|
+
* PascalCase bileşen mi?
|
|
79
|
+
* @param {string} name
|
|
80
|
+
* @returns {boolean}
|
|
81
|
+
*/
|
|
82
|
+
export declare function isComponentTag(name: string): boolean;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime'ın camelCase → PascalCase alias'ı ile aynı kural.
|
|
3
|
+
* @param {string} name
|
|
4
|
+
* @returns {string}
|
|
5
|
+
*/
|
|
6
|
+
export declare function toComponentTag(name: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* @param {{ root: string, dirs: Record<string, string> }} config
|
|
9
|
+
* @returns {string[]} Mutlak view kökleri (var olanlar).
|
|
10
|
+
*/
|
|
11
|
+
export declare function getViewRoots(config: {
|
|
12
|
+
root: string;
|
|
13
|
+
dirs: Record<string, string>;
|
|
14
|
+
}): string[];
|
|
15
|
+
/**
|
|
16
|
+
* Bileşen dizinleri: her view kökü altındaki `components/`.
|
|
17
|
+
* @param {{ root: string, dirs: Record<string, string> }} config
|
|
18
|
+
* @returns {string[]}
|
|
19
|
+
*/
|
|
20
|
+
export declare function getComponentDirs(config: {
|
|
21
|
+
root: string;
|
|
22
|
+
dirs: Record<string, string>;
|
|
23
|
+
}): string[];
|
|
24
|
+
/**
|
|
25
|
+
* @param {string[]} viewRoots
|
|
26
|
+
* @returns {Map<string, string>} viewId → mutlak `.jsk` yolu
|
|
27
|
+
*/
|
|
28
|
+
export declare function discoverJskFiles(viewRoots: string[]): Map<string, string>;
|
|
29
|
+
/**
|
|
30
|
+
* `components/foo-bar.jsk` → `FooBar`
|
|
31
|
+
* @param {string} viewId
|
|
32
|
+
* @returns {string | null}
|
|
33
|
+
*/
|
|
34
|
+
export declare function componentNameFromViewId(viewId: string): string | null;
|
|
35
|
+
/**
|
|
36
|
+
* Bilinen bileşen adları: JS named export'lar + derlenecek `.jsk` bileşenleri
|
|
37
|
+
* + yerleşik etiketler.
|
|
38
|
+
*
|
|
39
|
+
* JS tarafında dosya adı varsayılmaz; kaynak metinden `export` adları okunur.
|
|
40
|
+
* Aynı export (veya aynı PascalCase etiket) iki dosyada varsa derleme hatası.
|
|
41
|
+
*
|
|
42
|
+
* @param {string[]} componentDirs
|
|
43
|
+
* @param {Map<string, string>} jskFiles
|
|
44
|
+
* @returns {Set<string>}
|
|
45
|
+
*/
|
|
46
|
+
export declare function collectKnownComponents(componentDirs: string[], jskFiles: Map<string, string>): Set<string>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kaynak metinden named export adlarını çıkarır — modülü çalıştırmadan.
|
|
3
|
+
* Compile-time bilinen bileşen listesi için; `default` yok sayılır.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @param {string} source
|
|
7
|
+
* @returns {string[]}
|
|
8
|
+
*/
|
|
9
|
+
export declare function scanNamedExports(source: string): string[];
|