@gasboost/fake-core 0.1.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/blob/InMemoryBlob.d.ts +21 -0
- package/dist/blob/InMemoryBlob.js +62 -0
- package/dist/blob/InMemoryBlob.js.map +1 -0
- package/dist/cache/InMemoryCache.d.ts +13 -0
- package/dist/cache/InMemoryCache.js +68 -0
- package/dist/cache/InMemoryCache.js.map +1 -0
- package/dist/cache/InMemoryCacheService.d.ts +7 -0
- package/dist/cache/InMemoryCacheService.js +14 -0
- package/dist/cache/InMemoryCacheService.js.map +1 -0
- package/dist/cache/index.d.ts +2 -0
- package/dist/cache/index.js +3 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/properties-service/InMemoryProperties.d.ts +10 -0
- package/dist/properties-service/InMemoryProperties.js +38 -0
- package/dist/properties-service/InMemoryProperties.js.map +1 -0
- package/dist/properties-service/InMemoryPropertiesService.d.ts +5 -0
- package/dist/properties-service/InMemoryPropertiesService.js +13 -0
- package/dist/properties-service/InMemoryPropertiesService.js.map +1 -0
- package/dist/properties-service/index.d.ts +2 -0
- package/dist/properties-service/index.js +3 -0
- package/dist/properties-service/index.js.map +1 -0
- package/dist/session/InMemoryContext.d.ts +30 -0
- package/dist/session/InMemoryContext.js +62 -0
- package/dist/session/InMemoryContext.js.map +1 -0
- package/dist/session/InMemorySession.d.ts +19 -0
- package/dist/session/InMemorySession.js +58 -0
- package/dist/session/InMemorySession.js.map +1 -0
- package/dist/session/InMemoryUser.d.ts +7 -0
- package/dist/session/InMemoryUser.js +20 -0
- package/dist/session/InMemoryUser.js.map +1 -0
- package/dist/session/SecurityPolicy.d.ts +8 -0
- package/dist/session/SecurityPolicy.js +14 -0
- package/dist/session/SecurityPolicy.js.map +1 -0
- package/dist/session/index.d.ts +3 -0
- package/dist/session/index.js +4 -0
- package/dist/session/index.js.map +1 -0
- package/dist/utilities/AppsScriptByte.d.ts +5 -0
- package/dist/utilities/AppsScriptByte.js +10 -0
- package/dist/utilities/AppsScriptByte.js.map +1 -0
- package/dist/utilities/BinaryData.d.ts +6 -0
- package/dist/utilities/BinaryData.js +21 -0
- package/dist/utilities/BinaryData.js.map +1 -0
- package/dist/utilities/DateFormatPattern.d.ts +7 -0
- package/dist/utilities/DateFormatPattern.js +78 -0
- package/dist/utilities/DateFormatPattern.js.map +1 -0
- package/dist/utilities/DatePatternToken.d.ts +17 -0
- package/dist/utilities/DatePatternToken.js +64 -0
- package/dist/utilities/DatePatternToken.js.map +1 -0
- package/dist/utilities/MD2.d.ts +5 -0
- package/dist/utilities/MD2.js +61 -0
- package/dist/utilities/MD2.js.map +1 -0
- package/dist/utilities/PartedDate.d.ts +11 -0
- package/dist/utilities/PartedDate.js +37 -0
- package/dist/utilities/PartedDate.js.map +1 -0
- package/dist/utilities/StringCode.d.ts +5 -0
- package/dist/utilities/StringCode.js +25 -0
- package/dist/utilities/StringCode.js.map +1 -0
- package/dist/utilities/index.d.ts +6 -0
- package/dist/utilities/index.js +7 -0
- package/dist/utilities/index.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare class InMemoryBlob implements GoogleAppsScript.Base.Blob {
|
|
2
|
+
private bytes;
|
|
3
|
+
private contentType;
|
|
4
|
+
private name;
|
|
5
|
+
constructor(data: string | ArrayLike<number>, contentType?: string | null, name?: string | null, charset?: string);
|
|
6
|
+
copyBlob(): GoogleAppsScript.Base.Blob;
|
|
7
|
+
getBlob(): GoogleAppsScript.Base.Blob;
|
|
8
|
+
getAs(contentType: string): GoogleAppsScript.Base.Blob;
|
|
9
|
+
getBytes(): number[];
|
|
10
|
+
getContentType(): string | null;
|
|
11
|
+
getDataAsString(charset?: string): string;
|
|
12
|
+
getName(): string | null;
|
|
13
|
+
isGoogleType(): boolean;
|
|
14
|
+
setBytes(data: number[]): GoogleAppsScript.Base.Blob;
|
|
15
|
+
setContentType(contentType: string | null): GoogleAppsScript.Base.Blob;
|
|
16
|
+
setContentTypeFromExtension(): GoogleAppsScript.Base.Blob;
|
|
17
|
+
setDataFromString(value: string, charset?: string): GoogleAppsScript.Base.Blob;
|
|
18
|
+
setName(name: string): GoogleAppsScript.Base.Blob;
|
|
19
|
+
/** @deprecated DO NOT USE */
|
|
20
|
+
getAllBlobs(): GoogleAppsScript.Base.Blob[];
|
|
21
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { AppsScriptByte } from "../utilities/AppsScriptByte";
|
|
2
|
+
import { BinaryData } from "../utilities/BinaryData";
|
|
3
|
+
export class InMemoryBlob {
|
|
4
|
+
bytes;
|
|
5
|
+
contentType;
|
|
6
|
+
name;
|
|
7
|
+
constructor(data, contentType = null, name = null, charset) {
|
|
8
|
+
const binaryData = new BinaryData(data, charset ?? "UTF_8");
|
|
9
|
+
this.bytes = Uint8Array.from(binaryData.bytes);
|
|
10
|
+
this.contentType = contentType;
|
|
11
|
+
this.name = name;
|
|
12
|
+
}
|
|
13
|
+
copyBlob() {
|
|
14
|
+
return new InMemoryBlob(this.bytes, this.contentType, this.name);
|
|
15
|
+
}
|
|
16
|
+
getBlob() {
|
|
17
|
+
return this.copyBlob();
|
|
18
|
+
}
|
|
19
|
+
getAs(contentType) {
|
|
20
|
+
return new InMemoryBlob(this.bytes, contentType, this.name);
|
|
21
|
+
}
|
|
22
|
+
getBytes() {
|
|
23
|
+
const appsScriptByte = new AppsScriptByte(this.bytes);
|
|
24
|
+
return appsScriptByte.sign();
|
|
25
|
+
}
|
|
26
|
+
getContentType() {
|
|
27
|
+
return this.contentType;
|
|
28
|
+
}
|
|
29
|
+
getDataAsString(charset) {
|
|
30
|
+
return new BinaryData(this.bytes, charset ?? "UTF_8").decode();
|
|
31
|
+
}
|
|
32
|
+
getName() {
|
|
33
|
+
return this.name;
|
|
34
|
+
}
|
|
35
|
+
isGoogleType() {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
setBytes(data) {
|
|
39
|
+
this.bytes = Uint8Array.from(data);
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
setContentType(contentType) {
|
|
43
|
+
this.contentType = contentType;
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
setContentTypeFromExtension() {
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
setDataFromString(value, charset) {
|
|
50
|
+
this.bytes = new BinaryData(value, charset ?? "UTF_8").bytes;
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
setName(name) {
|
|
54
|
+
this.name = name;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
/** @deprecated DO NOT USE */
|
|
58
|
+
getAllBlobs() {
|
|
59
|
+
return [this.copyBlob()];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=InMemoryBlob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryBlob.js","sourceRoot":"","sources":["../../src/blob/InMemoryBlob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,OAAO,YAAY;IACf,KAAK,CAAa;IAClB,WAAW,CAAgB;IAC3B,IAAI,CAAgB;IAE5B,YACE,IAAgC,EAChC,cAA6B,IAAI,EACjC,OAAsB,IAAI,EAC1B,OAAgB;QAEhB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,WAAmB;QACvB,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,QAAQ;QACN,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,eAAe,CAAC,OAAgB;QAC9B,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,IAAc;QACrB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,WAA0B;QACvC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CACf,KAAa,EACb,OAAgB;QAEhB,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAA6B;IAC7B,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare class InMemoryCache implements GoogleAppsScript.Cache.Cache {
|
|
2
|
+
private date;
|
|
3
|
+
private storage;
|
|
4
|
+
constructor(date?: {
|
|
5
|
+
now: () => number;
|
|
6
|
+
});
|
|
7
|
+
put(key: string, value: string, expirationInSeconds?: number): void;
|
|
8
|
+
putAll(values: Record<string, string>, expirationInSeconds?: number): void;
|
|
9
|
+
get(key: string): string | null;
|
|
10
|
+
getAll(keys: string[]): Record<string, string>;
|
|
11
|
+
remove(key: string): void;
|
|
12
|
+
removeAll(keys: string[]): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export class InMemoryCache {
|
|
2
|
+
date;
|
|
3
|
+
storage = new Map();
|
|
4
|
+
constructor(date = Date) {
|
|
5
|
+
this.date = date;
|
|
6
|
+
}
|
|
7
|
+
put(key, value, expirationInSeconds = 600) {
|
|
8
|
+
if (key.length > 250) {
|
|
9
|
+
throw new Error("Argument too large: key");
|
|
10
|
+
}
|
|
11
|
+
const valueSize = new TextEncoder().encode(value).length;
|
|
12
|
+
if (valueSize > 100 * 1024) {
|
|
13
|
+
throw new Error("Argument too large: value");
|
|
14
|
+
}
|
|
15
|
+
if (expirationInSeconds < 1 || expirationInSeconds > 21600) {
|
|
16
|
+
throw new Error("Argument out of range: expirationInSeconds");
|
|
17
|
+
}
|
|
18
|
+
const expirationTime = this.date.now() + expirationInSeconds * 1000;
|
|
19
|
+
// キャッシュのアイテム数が1000を超える場合、新しいアイテムを追加する前に、期限が近い100個が削除され、900個だけ残る
|
|
20
|
+
if (this.storage.size >= 1000) {
|
|
21
|
+
const entries = Array.from(this.storage.entries());
|
|
22
|
+
entries.sort((a, b) => a[1].expirationTime - b[1].expirationTime);
|
|
23
|
+
const nearlyExpirationTimeKeys = entries
|
|
24
|
+
.slice(0, 101)
|
|
25
|
+
.map(([key]) => key);
|
|
26
|
+
for (const expiringKey of nearlyExpirationTimeKeys) {
|
|
27
|
+
this.storage.delete(expiringKey);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
this.storage.set(key, { value, expirationTime });
|
|
31
|
+
}
|
|
32
|
+
putAll(values, expirationInSeconds = 600) {
|
|
33
|
+
for (const [key, value] of Object.entries(values)) {
|
|
34
|
+
this.put(key, value, expirationInSeconds);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
get(key) {
|
|
38
|
+
const cacheValue = this.storage.get(key);
|
|
39
|
+
if (!cacheValue) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const now = this.date.now();
|
|
43
|
+
if (cacheValue.expirationTime < now) {
|
|
44
|
+
this.storage.delete(key);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return cacheValue.value;
|
|
48
|
+
}
|
|
49
|
+
getAll(keys) {
|
|
50
|
+
const values = {};
|
|
51
|
+
for (const key of keys) {
|
|
52
|
+
const value = this.get(key);
|
|
53
|
+
if (value !== null) {
|
|
54
|
+
values[key] = value;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return values;
|
|
58
|
+
}
|
|
59
|
+
remove(key) {
|
|
60
|
+
this.storage.delete(key);
|
|
61
|
+
}
|
|
62
|
+
removeAll(keys) {
|
|
63
|
+
for (const key of keys) {
|
|
64
|
+
this.remove(key);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=InMemoryCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryCache.js","sourceRoot":"","sources":["../../src/cache/InMemoryCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InMemoryCache } from "./InMemoryCache";
|
|
2
|
+
export declare class InMemoryCacheService implements GoogleAppsScript.Cache.CacheService {
|
|
3
|
+
constructor();
|
|
4
|
+
getDocumentCache(): InMemoryCache | null;
|
|
5
|
+
getUserCache(): InMemoryCache;
|
|
6
|
+
getScriptCache(): InMemoryCache;
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InMemoryCache } from "./InMemoryCache";
|
|
2
|
+
export class InMemoryCacheService {
|
|
3
|
+
constructor() { }
|
|
4
|
+
getDocumentCache() {
|
|
5
|
+
return new InMemoryCache();
|
|
6
|
+
}
|
|
7
|
+
getUserCache() {
|
|
8
|
+
return new InMemoryCache();
|
|
9
|
+
}
|
|
10
|
+
getScriptCache() {
|
|
11
|
+
return new InMemoryCache();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=InMemoryCacheService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryCacheService.js","sourceRoot":"","sources":["../../src/cache/InMemoryCacheService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,OAAO,oBAAoB;IAG/B,gBAAe,CAAC;IAChB,gBAAgB;QACd,OAAO,IAAI,aAAa,EAAE,CAAC;IAC7B,CAAC;IACD,YAAY;QACV,OAAO,IAAI,aAAa,EAAE,CAAC;IAC7B,CAAC;IACD,cAAc;QACZ,OAAO,IAAI,aAAa,EAAE,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class InMemoryProperties implements GoogleAppsScript.Properties.Properties {
|
|
2
|
+
private storage;
|
|
3
|
+
deleteAllProperties(): GoogleAppsScript.Properties.Properties;
|
|
4
|
+
deleteProperty(key: string): GoogleAppsScript.Properties.Properties;
|
|
5
|
+
getKeys(): string[];
|
|
6
|
+
getProperties(): Record<string, string>;
|
|
7
|
+
getProperty(key: string): string | null;
|
|
8
|
+
setProperties(properties: Record<string, string>, deleteAll?: boolean): GoogleAppsScript.Properties.Properties;
|
|
9
|
+
setProperty(key: string, value: string): GoogleAppsScript.Properties.Properties;
|
|
10
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export class InMemoryProperties {
|
|
2
|
+
storage = new Map();
|
|
3
|
+
deleteAllProperties() {
|
|
4
|
+
this.storage.clear();
|
|
5
|
+
return this;
|
|
6
|
+
}
|
|
7
|
+
deleteProperty(key) {
|
|
8
|
+
this.storage.delete(key);
|
|
9
|
+
return this;
|
|
10
|
+
}
|
|
11
|
+
getKeys() {
|
|
12
|
+
return Array.from(this.storage.keys());
|
|
13
|
+
}
|
|
14
|
+
getProperties() {
|
|
15
|
+
const result = {};
|
|
16
|
+
this.storage.forEach((value, key) => {
|
|
17
|
+
result[key] = value;
|
|
18
|
+
});
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
getProperty(key) {
|
|
22
|
+
return this.storage.get(key) ?? null;
|
|
23
|
+
}
|
|
24
|
+
setProperties(properties, deleteAll) {
|
|
25
|
+
if (deleteAll) {
|
|
26
|
+
this.deleteAllProperties();
|
|
27
|
+
}
|
|
28
|
+
Object.entries(properties).forEach(([key, value]) => {
|
|
29
|
+
this.storage.set(key, value);
|
|
30
|
+
});
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
setProperty(key, value) {
|
|
34
|
+
this.storage.set(key, value);
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=InMemoryProperties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryProperties.js","sourceRoot":"","sources":["../../src/properties-service/InMemoryProperties.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAkB;IAGrB,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEjD,mBAAmB;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,GAAW;QACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,aAAa;QACX,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAED,aAAa,CACX,UAAkC,EAClC,SAAmB;QAEnB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CACT,GAAW,EACX,KAAa;QAEb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare class InMemoryPropertiesService implements GoogleAppsScript.Properties.PropertiesService {
|
|
2
|
+
getDocumentProperties(): GoogleAppsScript.Properties.Properties;
|
|
3
|
+
getUserProperties(): GoogleAppsScript.Properties.Properties;
|
|
4
|
+
getScriptProperties(): GoogleAppsScript.Properties.Properties;
|
|
5
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InMemoryProperties } from "./InMemoryProperties";
|
|
2
|
+
export class InMemoryPropertiesService {
|
|
3
|
+
getDocumentProperties() {
|
|
4
|
+
return new InMemoryProperties();
|
|
5
|
+
}
|
|
6
|
+
getUserProperties() {
|
|
7
|
+
return new InMemoryProperties();
|
|
8
|
+
}
|
|
9
|
+
getScriptProperties() {
|
|
10
|
+
return new InMemoryProperties();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=InMemoryPropertiesService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryPropertiesService.js","sourceRoot":"","sources":["../../src/properties-service/InMemoryPropertiesService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,OAAO,yBAAyB;IAGpC,qBAAqB;QACnB,OAAO,IAAI,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,kBAAkB,EAAE,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/properties-service/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { InMemoryUser } from "./InMemoryUser";
|
|
2
|
+
import { SecurityPolicy } from "./SecurityPolicy";
|
|
3
|
+
type Execution = {
|
|
4
|
+
type: "WEB_APP";
|
|
5
|
+
executeAs: "OWNER" | "USER";
|
|
6
|
+
} | {
|
|
7
|
+
type: "TRIGGER";
|
|
8
|
+
triggerType: "SIMPLE" | "INSTALLABLE";
|
|
9
|
+
triggerOwner: string;
|
|
10
|
+
} | {
|
|
11
|
+
type: "CUSTOM_FUNCTION";
|
|
12
|
+
};
|
|
13
|
+
export declare class InMemoryContext {
|
|
14
|
+
readonly execution: Execution;
|
|
15
|
+
readonly securityPolicy: SecurityPolicy;
|
|
16
|
+
readonly locale: string;
|
|
17
|
+
readonly timezone: string;
|
|
18
|
+
readonly owner: InMemoryUser;
|
|
19
|
+
readonly activeUser: InMemoryUser;
|
|
20
|
+
readonly triggerdBy: InMemoryUser | undefined;
|
|
21
|
+
constructor(ownerEmail: string, activeUserEmail: string, execution: Execution, securityPolicy: SecurityPolicy, locale: string, timezone: string);
|
|
22
|
+
canAccessUserEmail(): boolean;
|
|
23
|
+
isRestricted(): boolean;
|
|
24
|
+
isExecutingAsOwner(): boolean;
|
|
25
|
+
isSameDomain(): boolean;
|
|
26
|
+
isWebAppExecutingAsOwner(): boolean;
|
|
27
|
+
isInstallableTrigger(): boolean;
|
|
28
|
+
getTriggerSetupUserEmail(): string;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { InMemoryUser } from "./InMemoryUser";
|
|
2
|
+
import { OAuthScope } from "./SecurityPolicy";
|
|
3
|
+
export class InMemoryContext {
|
|
4
|
+
execution;
|
|
5
|
+
securityPolicy;
|
|
6
|
+
locale;
|
|
7
|
+
timezone;
|
|
8
|
+
owner;
|
|
9
|
+
activeUser;
|
|
10
|
+
triggerdBy;
|
|
11
|
+
constructor(ownerEmail, activeUserEmail, execution, securityPolicy, locale, timezone) {
|
|
12
|
+
this.execution = execution;
|
|
13
|
+
this.securityPolicy = securityPolicy;
|
|
14
|
+
this.locale = locale;
|
|
15
|
+
this.timezone = timezone;
|
|
16
|
+
this.owner = new InMemoryUser(ownerEmail);
|
|
17
|
+
this.activeUser = new InMemoryUser(activeUserEmail);
|
|
18
|
+
this.triggerdBy =
|
|
19
|
+
execution.type === "TRIGGER"
|
|
20
|
+
? new InMemoryUser(execution.triggerOwner)
|
|
21
|
+
: undefined;
|
|
22
|
+
}
|
|
23
|
+
canAccessUserEmail() {
|
|
24
|
+
// OAuth未承認
|
|
25
|
+
if (!this.securityPolicy.hasPermission(OAuthScope.USERINFO_EMAIL)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
isRestricted() {
|
|
31
|
+
if (this.execution.type === "TRIGGER") {
|
|
32
|
+
return this.execution.triggerType === "SIMPLE";
|
|
33
|
+
}
|
|
34
|
+
if (this.execution.type === "CUSTOM_FUNCTION") {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
if (this.execution.type === "WEB_APP") {
|
|
38
|
+
return this.execution.executeAs === "OWNER";
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
isExecutingAsOwner() {
|
|
43
|
+
return this.activeUser.getEmail() === this.owner.getEmail();
|
|
44
|
+
}
|
|
45
|
+
isSameDomain() {
|
|
46
|
+
return this.owner.getDomain() === this.activeUser.getDomain();
|
|
47
|
+
}
|
|
48
|
+
isWebAppExecutingAsOwner() {
|
|
49
|
+
return (this.execution.type === "WEB_APP" && this.execution.executeAs === "OWNER");
|
|
50
|
+
}
|
|
51
|
+
isInstallableTrigger() {
|
|
52
|
+
return (this.execution.type === "TRIGGER" &&
|
|
53
|
+
this.execution.triggerType === "INSTALLABLE");
|
|
54
|
+
}
|
|
55
|
+
getTriggerSetupUserEmail() {
|
|
56
|
+
if (this.execution.type === "TRIGGER") {
|
|
57
|
+
return this.execution.triggerOwner;
|
|
58
|
+
}
|
|
59
|
+
return "";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=InMemoryContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryContext.js","sourceRoot":"","sources":["../../src/session/InMemoryContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAgB9D,MAAM,OAAO,eAAe;IAQR;IACA;IACA;IACA;IAVF,KAAK,CAAe;IACpB,UAAU,CAAe;IACzB,UAAU,CAA2B;IAErD,YACE,UAAkB,EAClB,eAAuB,EACP,SAAoB,EACpB,cAA8B,EAC9B,MAAc,EACd,QAAgB;QAHhB,cAAS,GAAT,SAAS,CAAW;QACpB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAQ;QAEhC,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU;YACb,SAAS,CAAC,IAAI,KAAK,SAAS;gBAC1B,CAAC,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC;gBAC1C,CAAC,CAAC,SAAS,CAAC;IAClB,CAAC;IAED,kBAAkB;QAChB,WAAW;QACX,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAClE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,QAAQ,CAAC;QACjD,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC;QAC9C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC9D,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IAChE,CAAC;IAED,wBAAwB;QACtB,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAC1E,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS;YACjC,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,aAAa,CAC7C,CAAC;IACJ,CAAC;IAED,wBAAwB;QACtB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InMemoryContext } from "./InMemoryContext";
|
|
2
|
+
import { InMemoryUser } from "./InMemoryUser";
|
|
3
|
+
export declare enum Context {
|
|
4
|
+
SIMPLE_TRIGGER = "SIMPLE_TRIGGER",
|
|
5
|
+
CUSTOM_FUNCTION = "CUSTOM_FUNCTION",
|
|
6
|
+
WEB_APP_SELF = "WEB_APP_SELF",
|
|
7
|
+
OTHER = "OTHER"
|
|
8
|
+
}
|
|
9
|
+
export declare class InMemorySession implements GoogleAppsScript.Base.Session {
|
|
10
|
+
private readonly context;
|
|
11
|
+
constructor(context: InMemoryContext);
|
|
12
|
+
getActiveUser(): InMemoryUser;
|
|
13
|
+
getActiveUserLocale(): string;
|
|
14
|
+
getEffectiveUser(): GoogleAppsScript.Base.User;
|
|
15
|
+
getScriptTimeZone(): string;
|
|
16
|
+
getTemporaryActiveUserKey(): string;
|
|
17
|
+
getTimeZone(): string;
|
|
18
|
+
getUser(): GoogleAppsScript.Base.User;
|
|
19
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { InMemoryUser } from "./InMemoryUser";
|
|
2
|
+
export var Context;
|
|
3
|
+
(function (Context) {
|
|
4
|
+
Context["SIMPLE_TRIGGER"] = "SIMPLE_TRIGGER";
|
|
5
|
+
Context["CUSTOM_FUNCTION"] = "CUSTOM_FUNCTION";
|
|
6
|
+
Context["WEB_APP_SELF"] = "WEB_APP_SELF";
|
|
7
|
+
Context["OTHER"] = "OTHER";
|
|
8
|
+
})(Context || (Context = {}));
|
|
9
|
+
export class InMemorySession {
|
|
10
|
+
context;
|
|
11
|
+
constructor(context) {
|
|
12
|
+
this.context = context;
|
|
13
|
+
}
|
|
14
|
+
getActiveUser() {
|
|
15
|
+
// OAuth未承認
|
|
16
|
+
if (!this.context.canAccessUserEmail()) {
|
|
17
|
+
return new InMemoryUser("");
|
|
18
|
+
}
|
|
19
|
+
// 制限があるコンテキストか判定
|
|
20
|
+
const isRestrictedContext = this.context.isRestricted();
|
|
21
|
+
// 実行者がオーナーか判定
|
|
22
|
+
const isOwnerExecuting = this.context.isExecutingAsOwner();
|
|
23
|
+
// ドメインが同じか判定
|
|
24
|
+
const isSameDomain = this.context.isSameDomain();
|
|
25
|
+
// 制限があるコンテキストで、実行者がオーナーでない、かつドメインが同じでない場合は空文字を返す
|
|
26
|
+
if (isRestrictedContext && !isOwnerExecuting && !isSameDomain) {
|
|
27
|
+
return new InMemoryUser("");
|
|
28
|
+
}
|
|
29
|
+
return this.context.activeUser;
|
|
30
|
+
}
|
|
31
|
+
getActiveUserLocale() {
|
|
32
|
+
return this.context.locale;
|
|
33
|
+
}
|
|
34
|
+
getEffectiveUser() {
|
|
35
|
+
const isWebAppExecuteAsOwner = this.context.isWebAppExecutingAsOwner();
|
|
36
|
+
if (isWebAppExecuteAsOwner) {
|
|
37
|
+
return this.context.owner;
|
|
38
|
+
}
|
|
39
|
+
const isInstallableTrigger = this.context.isInstallableTrigger();
|
|
40
|
+
if (isInstallableTrigger) {
|
|
41
|
+
return this.context.triggerdBy;
|
|
42
|
+
}
|
|
43
|
+
return this.getActiveUser();
|
|
44
|
+
}
|
|
45
|
+
getScriptTimeZone() {
|
|
46
|
+
return this.context.timezone;
|
|
47
|
+
}
|
|
48
|
+
getTemporaryActiveUserKey() {
|
|
49
|
+
return "";
|
|
50
|
+
}
|
|
51
|
+
getTimeZone() {
|
|
52
|
+
return this.context.timezone;
|
|
53
|
+
}
|
|
54
|
+
getUser() {
|
|
55
|
+
return new InMemoryUser("");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=InMemorySession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemorySession.js","sourceRoot":"","sources":["../../src/session/InMemorySession.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAN,IAAY,OAKX;AALD,WAAY,OAAO;IACjB,4CAAiC,CAAA;IACjC,8CAAmC,CAAA;IACnC,wCAA6B,CAAA;IAC7B,0BAAe,CAAA;AACjB,CAAC,EALW,OAAO,KAAP,OAAO,QAKlB;AAED,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEzD,aAAa;QACX,WAAW;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACvC,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,iBAAiB;QACjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAExD,cAAc;QACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAE3D,aAAa;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAEjD,iDAAiD;QACjD,IAAI,mBAAmB,IAAI,CAAC,gBAAgB,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9D,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,gBAAgB;QACd,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC;QACvE,IAAI,sBAAsB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5B,CAAC;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACjE,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAW,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,yBAAyB;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export class InMemoryUser {
|
|
2
|
+
email;
|
|
3
|
+
constructor(email) {
|
|
4
|
+
this.email = email;
|
|
5
|
+
const regex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
6
|
+
if (!regex.test(email) && email !== "") {
|
|
7
|
+
throw new Error(`Invalid email: ${email}`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
getEmail() {
|
|
11
|
+
return this.email;
|
|
12
|
+
}
|
|
13
|
+
getDomain() {
|
|
14
|
+
return this.email.split("@")[1] || "";
|
|
15
|
+
}
|
|
16
|
+
getUserLoginId() {
|
|
17
|
+
return this.email.split("@")[0] || "";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=InMemoryUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryUser.js","sourceRoot":"","sources":["../../src/session/InMemoryUser.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QACxC,MAAM,KAAK,GACT,sIAAsI,CAAC;QACzI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IACD,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare enum OAuthScope {
|
|
2
|
+
USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email"
|
|
3
|
+
}
|
|
4
|
+
export declare class SecurityPolicy {
|
|
5
|
+
readonly oauthScopes: OAuthScope[];
|
|
6
|
+
constructor(oauthScopes: OAuthScope[]);
|
|
7
|
+
hasPermission(scope: OAuthScope): boolean;
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export var OAuthScope;
|
|
2
|
+
(function (OAuthScope) {
|
|
3
|
+
OAuthScope["USERINFO_EMAIL"] = "https://www.googleapis.com/auth/userinfo.email";
|
|
4
|
+
})(OAuthScope || (OAuthScope = {}));
|
|
5
|
+
export class SecurityPolicy {
|
|
6
|
+
oauthScopes;
|
|
7
|
+
constructor(oauthScopes) {
|
|
8
|
+
this.oauthScopes = oauthScopes;
|
|
9
|
+
}
|
|
10
|
+
hasPermission(scope) {
|
|
11
|
+
return this.oauthScopes.includes(scope);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=SecurityPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecurityPolicy.js","sourceRoot":"","sources":["../../src/session/SecurityPolicy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,+EAAiE,CAAA;AACnE,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB;AAED,MAAM,OAAO,cAAc;IACG;IAA5B,YAA4B,WAAyB;QAAzB,gBAAW,GAAX,WAAW,CAAc;IAAG,CAAC;IAEzD,aAAa,CAAC,KAAiB;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppsScriptByte.js","sourceRoot":"","sources":["../../src/utilities/AppsScriptByte.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IACG;IAA5B,YAA4B,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;IAAG,CAAC;IACjD,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AppsScriptByte } from "./AppsScriptByte";
|
|
2
|
+
import { StringCode } from "./StringCode";
|
|
3
|
+
export class BinaryData {
|
|
4
|
+
bytes;
|
|
5
|
+
constructor(value, charset) {
|
|
6
|
+
if (typeof value === "string") {
|
|
7
|
+
const stringCode = new StringCode(charset?.toString());
|
|
8
|
+
const normalized = stringCode.normalized(value);
|
|
9
|
+
this.bytes = new TextEncoder().encode(normalized);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
this.bytes = Uint8Array.from(value);
|
|
13
|
+
}
|
|
14
|
+
signedBytes() {
|
|
15
|
+
return new AppsScriptByte(this.bytes).sign();
|
|
16
|
+
}
|
|
17
|
+
decode() {
|
|
18
|
+
return new TextDecoder().decode(this.bytes);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=BinaryData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BinaryData.js","sourceRoot":"","sources":["../../src/utilities/BinaryData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,UAAU;IACL,KAAK,CAAa;IAClC,YAAY,KAAiC,EAAE,OAAgB;QAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,WAAW;QACT,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IACD,MAAM;QACJ,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DateObject, DatePatternToken } from "./DatePatternToken";
|
|
2
|
+
export declare class DateFormatPattern {
|
|
3
|
+
readonly source: string;
|
|
4
|
+
readonly tokens: DatePatternToken[];
|
|
5
|
+
constructor(source: string, treatAnyLetterAsToken?: boolean);
|
|
6
|
+
parse(value: string, dateObject: DateObject): Date;
|
|
7
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { DatePatternToken } from "./DatePatternToken";
|
|
2
|
+
// フォーマットパターン
|
|
3
|
+
export class DateFormatPattern {
|
|
4
|
+
source;
|
|
5
|
+
tokens;
|
|
6
|
+
constructor(source, treatAnyLetterAsToken = false) {
|
|
7
|
+
this.source = source;
|
|
8
|
+
const tokens = [];
|
|
9
|
+
let index = 0;
|
|
10
|
+
while (index < source.length) {
|
|
11
|
+
const character = source[index];
|
|
12
|
+
// クォート文字列
|
|
13
|
+
if (character === "'") {
|
|
14
|
+
let literal = "";
|
|
15
|
+
index += 1;
|
|
16
|
+
while (index < source.length) {
|
|
17
|
+
if (source[index] === "'") {
|
|
18
|
+
if (source[index + 1] === "'") {
|
|
19
|
+
literal += "'";
|
|
20
|
+
index += 2;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
index += 1;
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
literal += source[index];
|
|
27
|
+
index += 1;
|
|
28
|
+
}
|
|
29
|
+
tokens.push(new DatePatternToken("literal", literal));
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
// トークン
|
|
33
|
+
const isToken = treatAnyLetterAsToken
|
|
34
|
+
? /[A-Za-z]/.test(character)
|
|
35
|
+
: /[yMdHmsS]/.test(character);
|
|
36
|
+
if (isToken) {
|
|
37
|
+
let count = 1;
|
|
38
|
+
while (index + count < source.length &&
|
|
39
|
+
source[index + count] === character) {
|
|
40
|
+
count += 1;
|
|
41
|
+
}
|
|
42
|
+
tokens.push(new DatePatternToken("token", character, count));
|
|
43
|
+
index += count;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
// 通常文字
|
|
47
|
+
tokens.push(new DatePatternToken("literal", character));
|
|
48
|
+
index += 1;
|
|
49
|
+
}
|
|
50
|
+
this.tokens = tokens;
|
|
51
|
+
}
|
|
52
|
+
parse(value, dateObject) {
|
|
53
|
+
let cursor = 0;
|
|
54
|
+
for (let index = 0; index < this.tokens.length; index += 1) {
|
|
55
|
+
const token = this.tokens[index];
|
|
56
|
+
if (token.type === "literal") {
|
|
57
|
+
cursor += token.value.length;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const nextLiteral = this.tokens
|
|
61
|
+
.slice(index + 1)
|
|
62
|
+
.find((token) => token.type === "literal");
|
|
63
|
+
let raw;
|
|
64
|
+
if (nextLiteral) {
|
|
65
|
+
const nextIndex = value.indexOf(nextLiteral.value, cursor);
|
|
66
|
+
raw = value.slice(cursor, nextIndex);
|
|
67
|
+
cursor = nextIndex;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
raw = value.slice(cursor);
|
|
71
|
+
cursor = value.length;
|
|
72
|
+
}
|
|
73
|
+
token.parse(raw, dateObject);
|
|
74
|
+
}
|
|
75
|
+
return new Date(Number(dateObject.year), Number(dateObject.month) - 1, Number(dateObject.day), Number(dateObject.hour), Number(dateObject.minute), Number(dateObject.second), Number(dateObject.millisecond));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=DateFormatPattern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateFormatPattern.js","sourceRoot":"","sources":["../../src/utilities/DateFormatPattern.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface DateObject {
|
|
2
|
+
year: string;
|
|
3
|
+
month: string;
|
|
4
|
+
day: string;
|
|
5
|
+
hour: string;
|
|
6
|
+
minute: string;
|
|
7
|
+
second: string;
|
|
8
|
+
millisecond: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class DatePatternToken {
|
|
11
|
+
readonly type: "token" | "literal";
|
|
12
|
+
readonly value: string;
|
|
13
|
+
readonly count?: number | undefined;
|
|
14
|
+
constructor(type: "token" | "literal", value: string, count?: number | undefined);
|
|
15
|
+
replace(dateObject: DateObject): string;
|
|
16
|
+
parse(value: string, dateObject: DateObject): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// フォーマットパターンの最小単位
|
|
2
|
+
export class DatePatternToken {
|
|
3
|
+
type;
|
|
4
|
+
value;
|
|
5
|
+
count;
|
|
6
|
+
constructor(type, value, count) {
|
|
7
|
+
this.type = type;
|
|
8
|
+
this.value = value;
|
|
9
|
+
this.count = count;
|
|
10
|
+
}
|
|
11
|
+
replace(dateObject) {
|
|
12
|
+
if (this.type === "literal") {
|
|
13
|
+
return this.value;
|
|
14
|
+
}
|
|
15
|
+
switch (this.value) {
|
|
16
|
+
case "y":
|
|
17
|
+
return this.count === 2 ? dateObject.year.slice(-2) : dateObject.year;
|
|
18
|
+
case "M":
|
|
19
|
+
return dateObject.month.padStart(this.count ?? 2, "0");
|
|
20
|
+
case "d":
|
|
21
|
+
return dateObject.day.padStart(this.count ?? 2, "0");
|
|
22
|
+
case "H":
|
|
23
|
+
return dateObject.hour.padStart(this.count ?? 2, "0");
|
|
24
|
+
case "m":
|
|
25
|
+
return dateObject.minute.padStart(this.count ?? 2, "0");
|
|
26
|
+
case "s":
|
|
27
|
+
return dateObject.second.padStart(this.count ?? 2, "0");
|
|
28
|
+
case "S":
|
|
29
|
+
return dateObject.millisecond.padStart(this.count ?? 3, "0");
|
|
30
|
+
default:
|
|
31
|
+
return this.value;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
parse(value, dateObject) {
|
|
35
|
+
if (this.type === "literal") {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const length = this.count ?? 1;
|
|
39
|
+
switch (this.value) {
|
|
40
|
+
case "y":
|
|
41
|
+
dateObject.year = value.slice(0, length);
|
|
42
|
+
break;
|
|
43
|
+
case "M":
|
|
44
|
+
dateObject.month = value.slice(0, length);
|
|
45
|
+
break;
|
|
46
|
+
case "d":
|
|
47
|
+
dateObject.day = value.slice(0, length);
|
|
48
|
+
break;
|
|
49
|
+
case "H":
|
|
50
|
+
dateObject.hour = value.slice(0, length);
|
|
51
|
+
break;
|
|
52
|
+
case "m":
|
|
53
|
+
dateObject.minute = value.slice(0, length);
|
|
54
|
+
break;
|
|
55
|
+
case "s":
|
|
56
|
+
dateObject.second = value.slice(0, length);
|
|
57
|
+
break;
|
|
58
|
+
case "S":
|
|
59
|
+
dateObject.millisecond = value.slice(0, length);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=DatePatternToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePatternToken.js","sourceRoot":"","sources":["../../src/utilities/DatePatternToken.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export class Md2 {
|
|
2
|
+
S = [
|
|
3
|
+
41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6, 19, 98,
|
|
4
|
+
167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188, 76, 130, 202, 30,
|
|
5
|
+
155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24, 138, 23, 229, 18, 190, 78,
|
|
6
|
+
196, 214, 218, 158, 222, 73, 160, 251, 245, 142, 187, 47, 238, 122, 169,
|
|
7
|
+
104, 121, 145, 21, 178, 7, 63, 148, 194, 16, 137, 11, 34, 95, 33, 128, 127,
|
|
8
|
+
93, 154, 90, 144, 50, 39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48,
|
|
9
|
+
179, 72, 165, 181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56,
|
|
10
|
+
210, 150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157, 112,
|
|
11
|
+
89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27, 96, 37, 173,
|
|
12
|
+
174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15, 85, 71, 163, 35, 221,
|
|
13
|
+
81, 175, 58, 195, 92, 249, 206, 186, 197, 234, 38, 44, 83, 13, 110, 133, 40,
|
|
14
|
+
132, 9, 211, 223, 205, 244, 65, 129, 77, 82, 106, 220, 55, 200, 108, 193,
|
|
15
|
+
171, 250, 36, 225, 123, 8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99,
|
|
16
|
+
232, 109, 233, 203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88,
|
|
17
|
+
208, 228, 166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237,
|
|
18
|
+
31, 26, 219, 153, 141, 51, 159, 17, 131, 20,
|
|
19
|
+
];
|
|
20
|
+
digest;
|
|
21
|
+
constructor(data) {
|
|
22
|
+
// 1. Padding
|
|
23
|
+
const paddingLength = 16 - (data.length % 16);
|
|
24
|
+
const padded = new Uint8Array(data.length + paddingLength);
|
|
25
|
+
padded.set(data);
|
|
26
|
+
padded.fill(paddingLength, data.length);
|
|
27
|
+
// 2. Checksum
|
|
28
|
+
const checksum = new Uint8Array(16);
|
|
29
|
+
let L = 0;
|
|
30
|
+
for (let offset = 0; offset < padded.length; offset += 16) {
|
|
31
|
+
for (let j = 0; j < 16; j++) {
|
|
32
|
+
const c = padded[offset + j];
|
|
33
|
+
checksum[j] ^= this.S[c ^ L];
|
|
34
|
+
L = checksum[j];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// 3. message + checksum
|
|
38
|
+
const finalData = new Uint8Array(padded.length + 16);
|
|
39
|
+
finalData.set(padded);
|
|
40
|
+
finalData.set(checksum, padded.length);
|
|
41
|
+
// 4. Main transform
|
|
42
|
+
const X = new Uint8Array(48);
|
|
43
|
+
for (let offset = 0; offset < finalData.length; offset += 16) {
|
|
44
|
+
// copy block
|
|
45
|
+
for (let j = 0; j < 16; j++) {
|
|
46
|
+
X[16 + j] = finalData[offset + j];
|
|
47
|
+
X[32 + j] = X[16 + j] ^ X[j];
|
|
48
|
+
}
|
|
49
|
+
let t = 0;
|
|
50
|
+
for (let round = 0; round < 18; round++) {
|
|
51
|
+
for (let k = 0; k < 48; k++) {
|
|
52
|
+
X[k] ^= this.S[t];
|
|
53
|
+
t = X[k];
|
|
54
|
+
}
|
|
55
|
+
t = (t + round) % 256;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
this.digest = X.slice(0, 16);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=MD2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MD2.js","sourceRoot":"","sources":["../../src/utilities/MD2.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;IACG,CAAC,GAAG;QACnB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QACvE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACzE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;QAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACvE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG;QAC1E,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;QACzE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;QACxE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG;QAC3E,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;QAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG;QAC1E,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACxE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;QACvE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DateObject } from "./DatePatternToken";
|
|
2
|
+
export declare class PartedDate implements DateObject {
|
|
3
|
+
readonly year: string;
|
|
4
|
+
readonly month: string;
|
|
5
|
+
readonly day: string;
|
|
6
|
+
readonly hour: string;
|
|
7
|
+
readonly minute: string;
|
|
8
|
+
readonly second: string;
|
|
9
|
+
readonly millisecond: string;
|
|
10
|
+
constructor(date: Date, timeZone: string);
|
|
11
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// 分解された日付
|
|
2
|
+
export class PartedDate {
|
|
3
|
+
year;
|
|
4
|
+
month;
|
|
5
|
+
day;
|
|
6
|
+
hour;
|
|
7
|
+
minute;
|
|
8
|
+
second;
|
|
9
|
+
millisecond;
|
|
10
|
+
constructor(date, timeZone) {
|
|
11
|
+
const formatter = new Intl.DateTimeFormat("en-US", {
|
|
12
|
+
timeZone,
|
|
13
|
+
year: "numeric",
|
|
14
|
+
month: "2-digit",
|
|
15
|
+
day: "2-digit",
|
|
16
|
+
hour: "2-digit",
|
|
17
|
+
minute: "2-digit",
|
|
18
|
+
second: "2-digit",
|
|
19
|
+
hour12: false,
|
|
20
|
+
});
|
|
21
|
+
const parts = {};
|
|
22
|
+
for (const part of formatter.formatToParts(date)) {
|
|
23
|
+
if (part.type !== "literal") {
|
|
24
|
+
parts[part.type] = part.value;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
this.year = parts.year;
|
|
28
|
+
this.month = parts.month;
|
|
29
|
+
this.day = parts.day;
|
|
30
|
+
this.hour = parts.hour;
|
|
31
|
+
this.minute = parts.minute;
|
|
32
|
+
this.second = parts.second;
|
|
33
|
+
this.millisecond =
|
|
34
|
+
parts.millisecond || String(date.getMilliseconds()).padStart(3, "0");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=PartedDate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PartedDate.js","sourceRoot":"","sources":["../../src/utilities/PartedDate.ts"],"names":[],"mappings":"AAEA,UAAU;AACV,MAAM,OAAO,UAAU;IACL,IAAI,CAAS;IACb,KAAK,CAAS;IACd,GAAG,CAAS;IACZ,IAAI,CAAS;IACb,MAAM,CAAS;IACf,MAAM,CAAS;IACf,WAAW,CAAS;IAEpC,YAAY,IAAU,EAAE,QAAgB;QACtC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACjD,QAAQ;YACR,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QAEH,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,WAAW;YACd,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export class StringCode {
|
|
2
|
+
name;
|
|
3
|
+
constructor(charset) {
|
|
4
|
+
switch (charset) {
|
|
5
|
+
case "UTF_8":
|
|
6
|
+
this.name = "utf8";
|
|
7
|
+
break;
|
|
8
|
+
case "US_ASCII":
|
|
9
|
+
case undefined:
|
|
10
|
+
this.name = "ascii";
|
|
11
|
+
break;
|
|
12
|
+
default:
|
|
13
|
+
throw new Error(`Unsupported charset: ${charset}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
normalized(data) {
|
|
17
|
+
if (this.name !== "ascii") {
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
return [...data]
|
|
21
|
+
.map((char) => (char.charCodeAt(0) <= 0x7f ? char : "?"))
|
|
22
|
+
.join("");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=StringCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StringCode.js","sourceRoot":"","sources":["../../src/utilities/StringCode.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACL,IAAI,CAAmB;IACvC,YAAY,OAAgB;QAC1B,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;gBACnB,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,SAAS;gBACZ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;gBACpB,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,UAAU,CAAC,IAAY;QACrB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC;aACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACxD,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gasboost/fake-core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "This package provides a fake implementation of Google Apps Script built-in services for testing purposes.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "tiger-oshima",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/gasboost/fake.git",
|
|
10
|
+
"directory": "packages/fake-core"
|
|
11
|
+
},
|
|
12
|
+
"type": "module",
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": "./dist/index.js",
|
|
17
|
+
"./internal": "./dist/internal.js"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"format": "prettier --ignore-path ../../.prettierignore --write .",
|
|
27
|
+
"formatcheck": "prettier --ignore-path ../../.prettierignore --check .",
|
|
28
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
29
|
+
"lint": "eslint . --ext .ts",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"check": "pnpm formatcheck && pnpm lint && pnpm typecheck && pnpm test",
|
|
32
|
+
"build": "rm -rf dist && tsc -p tsconfig.json"
|
|
33
|
+
}
|
|
34
|
+
}
|